Aracılığıyla paylaş


Tetikleyici (Transact-SQL) devre dışı bırakma

Tetikleyici devre dışı bırakır.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]

Bağımsız değişkenler

  • schema_name
    Tetikleyici ait olduğu şema addır.schema_nameDDL veya oturum açma tetikleyici belirtilemez.

  • trigger_name
    Tetikleyici devre dışı bırakılması adıdır.

  • ALL
    kapsam on yan tümce tanımlanan tüm tetikleyiciler devre dışı olduğunu gösterir.

    Dikkat notuDikkat

    SQL Serverbirleştirme çoğaltmasıiçin yayımlanan veritabanı Tetikleyiciler oluşturur.Devre dışı tüm yayımlanmış veritabanları belirterek bu Tetikleyicileri, çoğaltmabozar bırakır.Geçerli veritabanı birleştirme çoğaltması için tüm belirtmeden önce yayınlanmamış olan olduğunu doğrulayın.

  • object_name
    tablo ya da görünüm üzerinde DML Tetikleyici adı trigger_name yürütmekoluşturuldu.

  • VERİTABANI
    DDL tetikleyici için gösterir trigger_name oluşturulmuş veya değiştirilmiş veritabanı kapsam yürütmek için.

  • TÜM SUNUCU
    DDL tetikleyici için gösterir trigger_name oluşturulmuş veya değiştirilmiş yürütmek sunucu kapsamiçin.TÜM sunucu oturum açma Tetikleyiciler için de geçerlidir.

Açıklamalar

Oluşturuldukları sırada, Tetikleyiciler varsayılan olarak etkinleştirilir.Tetikleyici devre dışı bırakın değil.Tetikleyici hala geçerli veritabanında bir nesne olarak bulunmaktadır.Ancak, tetikleyici herhangi zaman başlatılmıyor Transact-SQL üzerinde onu programlanmış deyimleri yürütülen.Tetikleyici etkinleştirilebilir kullanarak Tetikleyici etkinleştirmek.DML Tetikleyicileri tablo üzerinde tanımlı olabilir de devre dışı veya etkin kullanarak alter table.

İzinler

En azından, DML Tetikleyici devre dışı bırakmak için kullanıcı tablo veya Görünüm tetikleyici oluşturulduğu alter izninizin olması gerekir.

DDL tetikleyici server kapsam (on tüm sunucu) veya oturum açma Tetikleyici devre dışı bırakmak için bir kullanıcı sunucu üzerinde control server izni olmalıdır.Bir kullanıcı veritabanı kapsam (on database), en azından bir DDL Tetikleyici devre dışı bırakmak için geçerli veritabanındaki alter any database DDL tetikleyici izninizin olması gerekir.

Örnekler

A.Bir tablo DML Tetikleyici devre dışı bırakma

Aşağıdaki örnek Tetikleyici devre dışı bırakır uAddress tabloüzerinde oluşturulmuş Address.

USE AdventureWorks2008R2;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO

B.DDL Tetikleyici devre dışı bırakma

Aşağıdaki örnek, bir DDL tetikleyici oluşturur safety ile kapsam, veritabanı ve sonra da it. devre dışı bırakır

IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
CREATE TRIGGER safety 
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT 'You must disable Trigger "safety" to drop or alter tables!' 
   ROLLBACK;
GO
DISABLE TRIGGER safety ON DATABASE;
GO

C.Aynı kapsamile tanımlanan tüm tetikleyiciler devre dışı bırakma

Aşağıdaki örnek, sunucu kapsamoluşturulan tüm DDL tetikleyiciler devre dışı bırakır.

USE AdventureWorks2008R2;
GO
DISABLE Trigger ALL ON ALL SERVER;
GO