특정 스키마에 속한 개체들을 다른 스키마로 한번에 이동하기 SQL Server
SQL2000에서 SQL2005로 업그레이드 혹은 복원을 하였을 경우에, 기존의 개체 소유자가 SQL2005의 스키마로
자동 등록이 됩니다. 이 때문에 사용상의 불편함을 격는 분들이 계신데요.
이런 경우에 사용할 수 있는 스키마 일괄 변경 프로시져입니다.
create proc up_changeObjectSchema
@oriSchema varchar(20), --원래 스키마
@newSchema varchar(20) --변경할 스키마
as
declare @objectName varchar(100)
declare @schemeID int
declare @schemaName varchar(100)
declare @strSQL varchar(8000)
set @strSQL = ''
declare myCursor cursor
for
select O.name as objectName,O.uid as schemaID,S.name as schemaName from sys.sysobjects O join sys.schemas S
on O.uid = S.schema_id where S.name = @oriSchema and O.xtype = 'U' and O.parent_obj = 0
open myCursor
fetch next from myCursor into @objectName,@schemeID,@schemaName
while @@fetch_status = 0
begin
set @strSQL = @strSQL + 'alter schema ' + @newSchema + ' transfer ' + @oriSchema + '.' + @objectName + char(13)
fetch next from myCursor into @objectName,@schemeID,@schemaName
end
close myCursor
deallocate myCursor
--print @strSQL
exec (@strSQL)
go
-- 프로시져 실행 테스트 (jkkim이 소유한 스키마를 dbo스키마가 소유하게 변경)
exec up_changeObjectSchema 'jkkim','dbo'


0