Aracılığıyla paylaş


TETIKLEYICIYI ETKINLEŞTIR (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiMicrosoft Fabric'te SQL veritabanı

DML, DDL veya giriş tetikleyicisini etkinleştirir.

Transact-SQL söz dizimi kuralları

Sözdizimi

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

Arguments

schema_name
Tetikleyicinin ait olduğu şemanın adıdır. schema_name DDL veya oturum açma tetikleyicileri için belirtilemiyor.

trigger_name
Tetikleyicinin adı etkinleştirilecek mi?

HEPSİ
ON maddesinin kapsamında tanımlanan tüm tetikleyicilerin etkin olduğunu gösterir.

object_name
DML tetikleyicisinin çalıştırılmak üzere oluşturulduğu tablo veya görünüm trigger_name adıdır.

DATABASE
DDL tetikleyicisi için, trigger_name veritabanı kapsamıyla çalıştırılacak şekilde oluşturulduğunu veya değiştirildiğini gösterir.

TÜM SUNUCU
için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.

DDL tetikleyicisi için, trigger_name sunucu kapsamıyla çalıştırılacak şekilde oluşturulduğunu veya değiştirildiğini gösterir. ALL SERVER ayrıca giriş tetikleyicileri için de geçerlidir.

Uyarı

Bu seçenek, kapalı bir veritabanında mevcut değildir.

Açıklamalar

Bir tetikleyiciyi etkinleştirmek onu yeniden yaratmaz. Devre dışı bırakılmış bir tetikleyici mevcut veritabanında bir nesne olarak hâlâ var ama ateşlenmiyor. Tetikleyiciyi etkinleştirmek için, orijinal programlandığı Transact-SQL açıklamaları çalıştırıldığında tetikleyici ateşlenir. Tetikleyiciler, DISABLE TRIGGER kullanılarak devre dışı bırakılır. Tablolarda tanımlanan DML tetikleyicileri de ALTER TABLE kullanılarak devre dışı bırakılabilir veya etkinleştirilebilir.

Permissions

DML tetikleyicisini etkinleştirmek için en azından kullanıcının, tetikleyicinin oluşturulduğu tablo veya görünüm üzerinde ALTER iznine sahip olması gerekir.

Sunucu kapsamı (TÜM SUNUCUDA) veya giriş tetikleyicisi olan bir DDL tetikleyicisini etkinleştirmek için, kullanıcının sunucuda CONTROL SERVER iznine ihtiyacı vardır. Veritabanı kapsamına sahip bir DDL tetikleyicisini (VERITABANI ÜZERİNDE) etkinleştirmek için en azından bir kullanıcının mevcut veritabanındaki HERSHANGİ DDL TRIGGER iznini değiştirmesi gerekir.

Örnekler

A. Bir tabloda DML tetikleyicisinin etkinleştirilmesi

Aşağıdaki örnek, AdventureWorks veritabanında tabloda Address oluşturulan tetikleyiciyi uAddress devre dışı bırakır ve etkinleştirir.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  
ENABLE Trigger Person.uAddress ON Person.Address;  
GO  

B. DDL tetikleyicisini etkinleştirmek

Aşağıdaki örnek, veritabanı kapsamına sahip bir DDL tetikleyicisi safety oluşturur, ardından bunu devre dışı bırakır ve etkinleştirir.

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  
ENABLE TRIGGER safety ON DATABASE;  
GO  

C. Aynı kapsamda tanımlanmış tüm tetikleyicileri etkinleştirmek

Aşağıdaki örnek, sunucu kapsamında oluşturulan tüm DDL tetikleyicilerini etkinleştirir.

için geçerlidir: SQL Server 2008 (10.0.x) ve üzeri.

ENABLE Trigger ALL ON ALL SERVER;  
GO  

Ayrıca Bkz.

TETİKLEMİYİ DEVRE DIŞI BIRAK (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
TETİKLEYİCİ OLUŞTUR (Transact-SQL)
ATKI TETIK (Transact-SQL)
sys.triggers (Transact-SQL)