Mendapatkan Informasi Tentang Pemicu DML

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Topik ini menjelaskan cara mendapatkan informasi tentang pemicu DML di SQL Server dengan menggunakan SQL Server Management Studio atau Transact-SQL. Informasi ini dapat mencakup jenis pemicu pada tabel, nama pemicu, pemiliknya, dan tanggal pembuatan atau modifikasinya. Jika pemicu tidak dienkripsi saat dibuat, Anda mendapatkan definisi pemicu. Anda dapat menggunakan definisi untuk membantu Anda memahami bagaimana pemicu memengaruhi tabel yang ditentukan. Selain itu, Anda dapat mengetahui objek yang digunakan pemicu tertentu. Dengan informasi ini, Anda dapat mengidentifikasi objek yang memengaruhi pemicu jika diubah atau dihapus dalam database.

Dalam Topik Ini

Sebelum Anda mulai

Keamanan

Izin

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
Visibilitas metadata dalam tampilan katalog terbatas pada keamanan yang dimiliki pengguna, atau di mana pengguna diberikan beberapa izin. Untuk informasi selengkapnya, lihat Konfigurasi Visibilitas Metadata.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Memerlukan keanggotaan dalam peran publik . Definisi objek pengguna terlihat oleh pemilik objek atau pemberi izin yang memiliki salah satu izin berikut: ALTER, CONTROL, TAKE OWNERSHIP, atau VIEW DEFINITION. Izin ini secara implisit dipegang oleh anggota peran database tetap db_owner, db_ddladmin, dan db_securityadmin .

sys.sql_expression_dependencies
Memerlukan izin VIEW DEFINITION pada database dan izin SELECT pada sys.sql_expression_dependencies untuk database. Secara default, izin SELECT hanya diberikan kepada anggota peran database tetap db_owner . Saat izin SELECT dan VIEW DEFINITION diberikan kepada pengguna lain, penerima hibah dapat melihat semua dependensi dalam database.

Menggunakan SQL Server Management Studio

Untuk melihat definisi pemicu DML

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas database yang Anda inginkan, perluas Tabel, lalu perluas tabel yang berisi pemicu yang ingin Anda lihat definisinya.

  3. Perluas Pemicu, klik kanan pemicu yang Anda inginkan, lalu klik Ubah. Definisi pemicu DML muncul di jendela kueri.

Untuk melihat dependensi pemicu DML

  1. Di Object Explorer, sambungkan ke instans Mesin Database lalu perluas instans tersebut.

  2. Perluas database yang Anda inginkan, perluas Tabel, lalu perluas tabel yang berisi pemicu dan dependensinya yang ingin Anda lihat.

  3. Perluas Pemicu, klik kanan pemicu yang Anda inginkan, lalu klik Tampilkan Dependensi.

  4. Di jendela Dependensi Objek, untuk melihat objek yang bergantung pada pemicu DML, pilih Objek yang bergantung pada <nama> pemicu DML. Objek muncul di area Dependensi .

    Untuk melihat objek yang bergantung pada DML, pilih Objek yang <bergantung pada nama> pemicu DML. Objek muncul di area Dependensi . Perluas setiap simpul untuk melihat semua objek.

  5. Untuk mendapatkan informasi tentang objek yang muncul di area Dependensi , klik objek . Di bidang Objek yang dipilih, informasi disediakan dalam kotak Jenis, Jenis, dan Dependensi.

  6. Untuk menutup jendela Dependensi Objek, klik OK.

Menggunakan T-SQL

Untuk melihat definisi pemicu DML

  1. Koneksi ke Mesin Database.

  2. Dari bilah Standar, klik Kueri Baru.

  3. Salin dan tempel salah satu contoh berikut ke dalam jendela kueri dan klik Jalankan. Setiap contoh menunjukkan bagaimana Anda dapat melihat definisi iuPerson pemicu.

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  
  

Untuk melihat dependensi pemicu DML

  1. Koneksi ke Mesin Database.

  2. Dari bilah Standar, klik Kueri Baru.

  3. Salin dan tempel salah satu contoh berikut ke dalam jendela kueri dan klik Jalankan. Setiap contoh menunjukkan bagaimana Anda dapat melihat dependensi iuPerson pemicu.

USE AdventureWorks2022;   
GO  
SELECT OBJECT_NAME(referencing_id) AS referencing_entity_name,   
    o.type_desc AS referencing_desciption,   
    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  
  

Untuk melihat informasi tentang pemicu DML dalam database

  1. Koneksi ke Mesin Database.

  2. Dari bilah Standar, klik Kueri Baru.

  3. Salin dan tempel salah satu contoh berikut ke dalam jendela kueri dan klik Jalankan. Setiap contoh memperlihatkan bagaimana Anda dapat melihat informasi tentang pemicu DML (TR) dalam database.

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  
  

Untuk melihat informasi tentang peristiwa yang mengaktifkan pemicu DML

  1. Koneksi ke Mesin Database.

  2. Dari bilah Standar, klik Kueri Baru.

  3. Salin dan tempel salah satu contoh berikut ke dalam jendela kueri dan klik Jalankan. Setiap contoh menunjukkan bagaimana Anda dapat melihat peristiwa yang mengaktifkan pemicu iuPerson .

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  

Lihat Juga

BUAT PEMICU (Transact-SQL)
JATUHKAN PEMICU (Transact-SQL)
AKTIFKAN PEMICU (Transact-SQL)
NONAKTIFKAN PEMICU (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (T-SQL)
UBAH PEMICU (Transact-SQL)
sp_help (T-SQL)
sp_helptrigger (T-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (T-SQL)
sys.sql_modules (Transact-SQL)
sys.assembly_modules (T-SQL)
sys.server_triggers (T-SQL)
sys.server_trigger_events (T-SQL)
sys.server_sql_modules (T-SQL)
sys.server_assembly_modules (T-SQL)
OBJECTPROPERTY (Transact-SQL)
OBJECT_DEFINITION (T-SQL)