SQL Server’da Schema Adını Değiştiren Cursor
Herkese merhaba,
Bu yazıda SQL Server’da schema adını değiştiren cursor’un nasıl yazılacağı hakkında bilgi vereceğim.
SQL Server’da araştırma yaparken tüm schema adlarını tek seferde nasıl değiştiririm diye merak ettim. Bununla ilgili örnek kodu aşağıda görmektesiniz.
Yalnız bu işlemi yapmadan önce değiştirme yapmak istediğiniz schemayı oluşturmadan bu işleme başlamayın yoksa hata alırsınız. Ben buradaki işlemleri Northwind veritabanı üzerinde anlatacağım. Siz de öğrenmek adına bu veritabanı üzerinde çalışabilirsiniz. İşlemi canlı veritabanı üzerinde deneme yapmadan önce iyice anladığınızdan emin olun.
DECLARE @currentSchemaName NVARCHAR(200),
@tableName NVARCHAR(200);
DECLARE tableCursor CURSOR FAST_FORWARD FOR
SELECT TABLE_SCHEMA,
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
ORDER BY 1,
2;
DECLARE @SQL NVARCHAR(400);
OPEN tableCursor;
FETCH NEXT FROM tableCursor
INTO @currentSchemaName,
@tableName;
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = N'ALTER SCHEMA YeniSema TRANSFER ' + @currentSchemaName + N'.[' + @tableName + N']';
PRINT @SQL; --Bu kısımda SQL Sorgusunu da görebilirsiniz.
EXEC (@SQL);
FETCH NEXT FROM tableCursor
INTO @currentSchemaName,
@tableName;
END;
CLOSE tableCursor;
DEALLOCATE tableCursor;
YeniSema dediğim kısım benim oluşturduğum schema adıdır. Siz daha önce schema oluşturduysanız buraya bu şema adınızı yazabilirsiniz.
Kodu çalıştırdığınızda tablo isimlerine bakalım.
Görüldüğü üzere dbo olan schema adları YeniSema olarak değişmiş oldu.
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.