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.

SQL Server’da Schema Adını Değiştiren Cursor

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.

244 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!