Возникла задача переименования схемы для всех представлений, созданных в другой схеме. Да, можно в Object explorer details выделить все представления и с помощью search and replace переименовывать схемы, а потом запустить скрипт, но вот существует скрипт. Может, пригодится :)
declare
@endOfLine char(2) = char(13) + char(10)
,@sql nvarchar(max) = N''
,@sqlCreate nvarchar(max) = N''
,@view_name nvarchar(128) = N''
,@col_list nvarchar(max) = N''
,@view_id int = 0
;
select
o.object_id
,o.name
,replace(m.definition, 'schema1', 'schema2') as view_definition
into #view_info
from sys.objects o
inner join sys.schemas s on s.schema_id = o. schema_id
join sys.sql_modules m on m.object_id = o.object_id
where s.name = 'schema1'
and o.type = 'V'
while exists(select top(1) object_id from #view_info)
begin
select top(1) @view_id = object_id from #view_info
set @sqlCreate = '';
declare @error_view_name nvarchar(128) = '';
select
@sqlCreate = view_definition,
@error_view_name = name
from
#view_info
where
object_id = @view_id
;
DELETE TOP (1) FROM #view_info
;
BEGIN TRY
exec sp_executesql @sqlCreate;
END TRY
BEGIN CATCH
print @error_view_name;
END CATCH
--print @sqlCreate;
;
end
DROP TABLE #view_info
Комментариев нет:
Отправить комментарий