Daha fazla nesne için ilk sorguyu değiştirdiniz: tablolar, görünümler, UDF, SP vb. Kendi nesne türlerini ekleyebilirsiniz. SQL Server 2012 için
DECLARE @OldSchema AS VARCHAR(255);
DECLARE @NewSchema AS VARCHAR(255);
SET @OldSchema = 'dbo';
SET @NewSchema = 'new_dbo';
DECLARE @sql AS VARCHAR(MAX);
DECLARE @sqlTmp AS VARCHAR(MAX);
SET @sql = 'CREATE SCHEMA [' + @NewSchema + ']' + CHAR(13) + CHAR(10);
PRINT @sql;
DECLARE @a INT = 1;
WHILE (@a < 1000000)
BEGIN
SET @sqlTmp = '';
SELECT @sqlTmp = 'ALTER SCHEMA [' + @NewSchema + '] TRANSFER ['
+ s_name + '].[' + o_name + ']'
FROM (SELECT s.name s_name ,
o.name o_name ,
ROW_NUMBER() OVER (ORDER BY o.object_id) r
FROM sys.objects o
JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE s.name = @OldSchema
AND o.type IN ('P', 'U', 'V', 'IF', 'TF', 'FN')
) a
WHERE r = @a;
IF (@@ROWCOUNT = 0)
SET @a = 100000000;
SET @a = @a + 1;
SET @sql = @sql + COALESCE(@sqlTmp, '') + CHAR(13) + CHAR(10);
PRINT @sqlTmp;
END;
SET @sql = @sql + 'DROP SCHEMA [' + @OldSchema + ']';
PRINT 'DROP SCHEMA [' + @OldSchema + ']';
teşekkürler. Bu cevabı, kullanıcı tanımlı işlevler için de nasıl ekleyeceğinizi de dahil ederek genişletebilir misiniz? – Lijo
@Lijo: [sorusuna bakın "Neden" sys.functions' katalogu görünümü yok? "] (Http://stackoverflow.com/questions/468672/sql-server-where-is-sys-functions) - kabul edilen cevap, 'sys.objects' –