Aracılığıyla paylaş


TETIKLEYICIYI DEVRE İŞİ DIŞI KÖRÜKLE (Transact-SQL)

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

Bir tetikleyiciyi devre dışı bırakır.

Transact-SQL söz dizimi kuralları

Sözdizimi

DISABLE 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 giriş tetikleyicileri için belirtilemez.

trigger_name
Devre dışı bırakılması gereken tetikleyicinin adı mı?

HEPSİ
ON maddesinin kapsamında tanımlanan tüm tetikleyicilerin devre dışı bırakıldığını gösterir.

Dikkat

SQL Server, veri tabanlarında birleştirme çoğaltımı için yayımlanan tetikleyiciler oluşturur. Yayınlanmış veritabanlarında ALL belirtmek bu tetikleyicileri devre dışı bırakır ve bu da çoğaltmayı bozar. ALL belirtmeden önce mevcut veritabanının birleştirme çoğaltımı için yayımlanmadığını doğrulayın.

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

Tetikleyiciler oluşturulduğunda varsayılan olarak etkinleştirilir. Bir tetikleyiciyi devre dışı bırakmak onu düşürmez. Tetikleyici hâlâ mevcut veritabanında bir nesne olarak varlığını sürdürmektedir. Ancak, tetikleyici, programlandığı herhangi bir Transact-SQL ifadesi çalıştırıldığında ateşlenmez. Tetikleyiciler, ENABLE TRIGGER kullanılarak yeniden etkinleştirilebilir. Tablolarda tanımlanan DML tetikleyicileri de ALTER TABLE kullanılarak devre dışı bırakılabilir veya etkinleştirilebilir.

ALTER TRIGGER ifadesi kullanılarak tetikleyiciyi değiştirmek, tetikleyiciyi etkinleştirir.

Permissions

DML tetikleyicisini devre dışı bırakmak için en azından bir 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 devre dışı bırakmak için, kullanıcının sunucuda CONTROL SERVER iznine sahip olması gerekir. Veritabanı kapsamına sahip bir DDL tetikleyicisini (ON DATABASE) devre dışı bırakmak için en azından bir kullanıcının mevcut veritabanında DETER ANY DATABASE DDL TRIGGER iznine sahip olması gerekir.

Örnekler

Bu makaledeki kod örnekleri, AdventureWorks2025 giriş sayfasından indirebileceğiniz AdventureWorksDW2025 veya örnek veritabanını kullanır.

A. Bir masada DML tetikleyicisini devre dışı bırakmak

Aşağıdaki örnek, tabloda uAddressoluşturulan tetikleyiciyi Person devre dışı bırakır.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B. DDL tetikleyicisini devre dışı bırakmak

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

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ı kapsamda tanımlanmış tüm tetikleyicileri devre dışı bırakmak

Aşağıdaki örnek, sunucu kapsamında oluşturulan tüm DDL tetikleyicilerini devre dışı bırakır.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

Ayrıca Bkz.

TETİKLEYİCİYİ ETKİNLEŞTİR (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
TETİKLEYİCİ OLUŞTUR (Transact-SQL)
ATKI TETIK (Transact-SQL)
sys.triggers (Transact-SQL)