DISABLE TETIKLEYICI (Transact-sql)
Tetikleyici devre dışı bırakır.
Transact-SQL Sözdizim 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 ya da logon tetikleyici belirtilemez.trigger_name
Tetikleyici devre dışı adıdır.ALL
on yan tümcesi kapsamında tanımlanan tüm Tetikleyiciler devre dışı bırakıldığını gösterir.Dikkat SQL ServerBirleştirme çoğaltma için yayımlanan veritabanı Tetikleyiciler oluşturur. TÜM yayımlanmış veritabanları belirterek hangi çoğaltma bozan bu Tetikleyiciler devre dışı bırakır. Veritabanı birleştirme çoğaltması tüm belirterek önce yayımlanmaz doğrulayın.
object_name
Tablo veya görünüm üzerinde dml tetikleyici adı trigger_nameyürütülecek oluşturuldu.DATABASE
ddl tetikleyici için gösteren trigger_name oluşturulduğu veya veritabanı kapsam ile yürütülecek güncellenmiştir.ALL SERVER
ddl tetikleyici için gösteren trigger_nameoluşturulduğu veya sunucu kapsamı ile yürütülecek güncellenmiştir. TÜM sunucu, oturum açma Tetikleyiciler için de geçerlidir.[!NOT]
Bu seçenek içerilen bir veritabanında kullanılamaz.
Açıklamalar
Tetikleyiciler oluşturulduğunda varsayılan olarak etkinleştirilir. Tetikleyici devre dışı bırak onu değil. Tetikleyici hala geçerli veritabanında bir nesne olarak bulunmaktadır. Ancak tetiği herhangi bir yangın değil Transact-SQLdeyimleri üzerinde programlanmış idam. Tetikleyiciler-etkinleştirilebilir kullanarak Tetikleyici etkinleştirmek. dml Tetikleyicileri tablo üzerinde tanımlı olabilir de kullanarak etkin veya devre dışı alter table.
İzinler
En azından, bir dml tetikleyici devre dışı bırakmak için kullanıcı tablo veya Görünüm tetikleyici oluşturulduğu alter izni olması gerekir.
Sunucu kapsamı (on all server) ile ddl tetikleyici ya da logon Tetikleyici devre dışı bırakmak için bir kullanıcının sunucuda control server izni olmalıdır. Veritabanı kapsamlı (on database), en azından bir ddl Tetikleyici devre dışı bırakmak için kullanıcı geçerli veritabanındaki alter any database ddl tetikleyici izni olmalıdır.
Örnekler
A.Bir tablodaki dml tetikleyici devre dışı bırakma
Aşağıdaki örnek Tetikleyici devre dışı uAddressBu tabloyu oluşturulduğu Address.
USE AdventureWorks2012;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
B.ddl Tetikleyici devre dışı bırakma
Aşağıdaki örnek, ddl tetikleyici oluşturur safety, veritabanı kapsamlı ve bunu 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ı kapsam ile tanımlanan tüm Tetikleyiciler devre dışı bırakma
Aşağıdaki örnek sunucu kapsamında oluşturulan tüm ddl Tetikleyiciler devre dışı bırakır.
USE AdventureWorks2012;
GO
DISABLE Trigger ALL ON ALL SERVER;
GO
Ayrıca bkz.
Başvuru
TETIKLEYICI (Transact-sql) etkinleştir
alter TETIKLEYICI (Transact-sql)