Aracılığıyla paylaş


DML Tetikleyicileri Hakkında Bilgi Alma

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen Örneği

Bu konuda, SQL Server Management Studio veya Transact-SQL kullanarak SQL Server'da DML tetikleyicileri hakkında nasıl bilgi alınacağınız açıklanmaktadır. Bu bilgiler tablodaki tetikleyici türlerini, tetikleyicinin adını, sahibini ve oluşturulduğu veya değiştirildiği tarihi içerebilir. Tetikleyici oluşturulduğunda şifrelenmemişse tetikleyicinin tanımını alırsınız. Tetikleyicinin tanımlandığı tabloyu nasıl etkilediğini anlamanıza yardımcı olması için tanımı kullanabilirsiniz. Ayrıca, belirli bir tetikleyicinin kullandığı nesneleri de bulabilirsiniz. Bu bilgilerle, veritabanında değiştirilir veya silinirse tetikleyiciyi etkileyen nesneleri tanımlayabilirsiniz.

Bu Konudaki

Başlamadan Önce

Güvenlik

İzinler

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
Katalog görünümlerindeki meta verilerin görünürlüğü, kullanıcının sahip olduğu veya kullanıcıya bazı izinlerin verildiği güvenli hale getirilebilir öğelerle sınırlıdır. Daha fazla bilgi için bkz. meta veri görünürlüğü yapılandırması .

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
"" genel "" rolüne üyelik gerektirir. Kullanıcı nesnelerinin tanımı, nesnenin sahibi veya aşağıdaki izinlerden herhangi birine sahip olan kişiler tarafından görülebilir: ALTER, CONTROL, TAKE OWNERSHIP veya VIEW DEFINITION. Bu izinler, db_owner, db_ddladminve db_securityadmin sabit veritabanı rollerinin üyeleri tarafından örtük olarak tutulur.

sys.sql_expression_dependencies
Veritabanında VIEW DEFINITION izni ve veritabanı için sys.sql_expression_dependencies üzerinde SELECT izni gerektirir. Varsayılan olarak, SELECT izni yalnızca db_owner sabit veritabanı rolünün üyelerine verilir. SELECT ve VIEW DEFINITION izinleri başka bir kullanıcıya verildiğinde, veren veritabanındaki tüm bağımlılıkları görüntüleyebilir.

SQL Server Management Studio'yu kullanma

DML tetikleyicisinin tanımını görüntülemek için

  1. Nesne Gezginiveritabanı altyapısının bir örneğine bağlanın ve bu örneği genişletin.

  2. Genişletmek istediğiniz veritabanını genişletin, Tablolar'yi genişletin, ardından tanımını görüntülemek istediğiniz tetikleyiciyi içeren tabloyu genişletin.

  3. Tetikleyicilerigenişletin, istediğiniz tetikleyiciye sağ tıklayın ve Değiştiröğesine tıklayın. DML tetikleyicisinin tanımı sorgu penceresinde görünür.

DML tetikleyicisinin bağımlılıklarını görüntülemek için

  1. Nesne Gezginiveritabanı altyapısının bir örneğine bağlanın ve bu örneği genişletin.

  2. İstediğiniz veritabanını genişletin, ardından Tablolargenişletin ve görüntülemek istediğiniz tetikleyiciyi ve bağımlılıklarını içeren tabloyu genişletin.

  3. Tetikleyicileri'ni genişletin, istediğiniz tetikleyiciye sağ tıklayın ve ardından Bağımlılıkları Görüntületıklayın.

  4. Nesne Bağımlılıkları penceresinde, DML tetikleyicisine bağlı nesneleri görüntülemek için <DML tetikleyici adına bağlı nesneler seçin>. Nesneler Bağımlılıklar alanında görünür.

    DML'nin bağımlı olduğu nesneleri görüntülemek için, <DML tetikleyici adının>bağlı olduğu nesnelerseçin. Nesneler Bağımlılıklar alanında görünür. Tüm nesneleri görmek için her düğümü genişletin.

  5. Bağımlılıklar alanında görünen bir nesne hakkında bilgi edinmek için nesneye tıklayın. seçili nesne alanında, Adı, Türve Bağımlılık türü kutularında bilgiler sağlanır.

  6. Nesne Bağımlılıkları penceresini kapatmak için Tamamöğesine tıklayın.

Transact-SQL kullanma

DML tetikleyicisinin tanımını görüntülemek için

  1. Veritabanı Altyapısı'na bağlanın.

  2. Standart çubuğundan Yeni Sorgutıklayın.

  3. Aşağıdaki örneklerden birini kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın. Her örnek, iuPerson tetikleyicisinin tanımını nasıl görüntüleyebileceğinizi gösterir.

USE AdventureWorks2022;  
GO  
SELECT definition   
FROM sys.sql_modules  
WHERE object_id = OBJECT_ID(N'Person.iuPerson');   
GO  
USE AdventureWorks2022;   
GO  
SELECT OBJECT_DEFINITION (OBJECT_ID(N'Person.iuPerson')) AS ObjectDefinition;   
GO  
  
USE AdventureWorks2022;   
GO  
EXEC sp_helptext 'Person.iuPerson'  
GO  
  

DML tetikleyicisinin bağımlılıklarını görüntülemek için

  1. Veritabanı Altyapısı'na bağlanın.

  2. Standart çubuğunda Yeni Sorguöğesine tıklayın.

  3. Aşağıdaki örneklerden birini kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın. Her örnek, iuPerson tetikleyicisinin bağımlılıklarını nasıl görüntüleyebileceğinizi gösterir.

USE AdventureWorks2022;   
GO  
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,   
    o.type_desc AS referencing_description,   
    COALESCE(COL_NAME(referencing_id, referencing_minor_id), '(n/a)') AS referencing_minor_id,   
    referencing_class_desc, referenced_class_desc,   
    referenced_server_name, referenced_database_name, referenced_schema_name,   
    referenced_entity_name,   
    COALESCE(COL_NAME(referenced_id, referenced_minor_id), '(n/a)') AS referenced_column_name,   
    is_caller_dependent, is_ambiguous  
FROM sys.sql_expression_dependencies AS sed  
INNER JOIN sys.objects AS o ON sed.referencing_id = o.object_id  
WHERE referencing_id = OBJECT_ID(N'Person.iuPerson');   
GO  
  

Veritabanındaki DML tetikleyicileri hakkındaki bilgileri görüntülemek için

  1. Veritabanı Altyapısı'na bağlanın.

  2. Standart Araç Çubuğu'ndan Yeni Sorguöğesine tıklayın.

  3. Aşağıdaki örneklerden birini kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın. Her örnek, veritabanındaki DML tetikleyicileri (TR) hakkındaki bilgileri nasıl görüntüleyebileceğinizi gösterir.

USE AdventureWorks2022;   
GO  
SELECT  name, parent_id, create_date, modify_date, is_instead_of_trigger  
FROM sys.triggers  
WHERE type = 'TR';   
GO  
  
USE AdventureWorks2022;   
GO  
SELECT  name, object_id, schema_id, parent_object_id, type_desc, create_date, modify_date, is_published  
FROM sys.objects  
WHERE type = 'TR';   
GO  
  
USE AdventureWorks2022;   
GO  
SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger');   
GO  
  

DML tetikleyicisi tetikleyen olaylar hakkındaki bilgileri görüntülemek için

  1. Veritabanı Altyapısı'na bağlanın.

  2. Standart çubuğundan Yeni Sorguöğesine tıklayın.

  3. Aşağıdaki örneklerden birini kopyalayıp sorgu penceresine yapıştırın ve Yürüt'e tıklayın. Her örnek, iuPerson tetikleyicisini tetikleyen olayları nasıl görüntüleyebileceğinizi gösterir.

USE AdventureWorks2022;   
GO  
SELECT object_id, type, type_desc, is_trigger_event, event_group_type, event_group_type_desc   
FROM sys.events  
WHERE object_id = OBJECT_ID('Person.iuPerson');   
GO  
USE AdventureWorks2022;   
GO   
SELECT object_id, type,is_first, is_last  
FROM sys.trigger_events  
WHERE object_id = OBJECT_ID('Person.iuPerson');   
GO  

Ayrıca Bkz.

"TETİKLEYİCİ OLUŞTUR (Transact-SQL) "
DROP TRIGGER (Transact-SQL)
TETİKLEYİCİYİ ETKİNLEŞTİR (Transact-SQL)
TETİĞİ DEVRE DIŞI BIRAK (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)
OBJECTPROPERTY (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)