SQL Server’da Triggerları Toplu Olarak Silmek

Herkese merhaba,

Bu yazıda SQL Server’da triggerları toplu olarak silmek hakkında bilgi vereceğim.

SQL Server’da bazı durumlarda veritabanındaki triggerları toplu olarak silmek isteyebiliriz.

Aşağıdaki kod yardımıyla bu işlemi rahatlıkla yapabilirsiniz.

DECLARE @SQLCmd NVARCHAR(1000);
DECLARE @Trig VARCHAR(500);
DECLARE @sch VARCHAR(500);

DECLARE TGCursor CURSOR FOR
SELECT ISNULL(tbl.name, vue.name) AS [schemaName],
       trg.name AS triggerName
FROM sys.triggers trg
    LEFT OUTER JOIN
    (
        SELECT tparent.object_id,
               ts.name
        FROM sys.tables tparent
            INNER JOIN sys.schemas ts
                ON ts.schema_id = tparent.schema_id
    ) AS tbl
        ON tbl.object_id = trg.parent_id
    LEFT OUTER JOIN
    (
        SELECT vparent.object_id,
               vs.name
        FROM sys.views vparent
            INNER JOIN sys.schemas vs
                ON vs.schema_id = vparent.schema_id
    ) AS vue
        ON vue.object_id = trg.parent_id;

OPEN TGCursor;
FETCH NEXT FROM TGCursor
INTO @sch,
     @Trig;
WHILE @@FETCH_STATUS = 0
BEGIN

    SET @SQLCmd = N'DROP TRIGGER [' + @sch + N'].[' + @Trig + N']';
    EXEC sp_executesql @SQLCmd;
    PRINT 'Silinen TRIGGER : ' + @Trig;

    FETCH NEXT FROM TGCursor
    INTO @sch,
         @Trig;
END;

CLOSE TGCursor;
DEALLOCATE TGCursor;

Kodu çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.

Görüldüğü üzere tüm triggerlar silinmiş oldu.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

368 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!