Tetikleyici (Transact-SQL) devre dışı bırakma
Tetikleyici devre dışı bırakır.
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 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