Obțineți informații despre declanșatoarele DML

  • articol
  • 12/17/2021
  • 4 minute de citit
    • M
    • r
    • c
    • p
este utilă această pagină?

mulțumesc.

se aplică la: yes SQL Server (toate versiunile acceptate)DaAzure SQL Database

acest subiect descrie cum să obțineți informații despre DML declanșează în SQL Server utilizând SQL Server Management Studio sau Transact-SQL. Aceste informații pot include tipurile de declanșatoare de pe un tabel, numele unui declanșator, proprietarul acestuia și data la care a fost creat sau modificat. Dacă declanșatorul nu a fost criptat atunci când a fost creat, obțineți definiția declanșatorului. Puteți utiliza definiția pentru a vă ajuta să înțelegeți modul în care un declanșator afectează tabelul pe care este definit. De asemenea, puteți afla obiectele pe care le folosește un anumit declanșator. Cu aceste informații, puteți identifica obiectele care afectează declanșatorul dacă sunt modificate sau șterse în baza de date.

în acest subiect

  • înainte de a începe:

    securitate

  • pentru a obține informații despre DML declanșează, folosind:

    SQL Server Management Studio

    Transact-SQL

înainte de a începe

securitate

permisiuni

sys.sql.module, sys.obiect, sys.declanșatoare, sys.evenimente, sys.trigger_events
vizibilitatea metadatelor din vizualizările catalogului este limitată la securables pe care un utilizator le deține sau pe care utilizatorul a primit o anumită permisiune. Pentru mai multe informații, consultați Configurarea vizibilității metadatelor.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
necesită apartenența la rolul public. Definiția obiectelor utilizator este vizibilă proprietarului obiectului sau beneficiarilor care au oricare dintre următoarele permisiuni: ALTER, CONTROL, TAKE OWNERSHIP sau VIEW DEFINITION. Aceste permisiuni sunt deținute implicit de membrii rolurilor bazei de date fixe db_owner, db_ddladmin și db_securityadmin.

sys.sql_expression_dependencies
necesită permisiunea vizualizare definiție în baza de date și selectați permisiunea pe sys.sql_expression_dependencies pentru baza de date. În mod implicit, selectați permisiunea este acordată numai membrilor rolului bazei de date fixe db_owner. Când permisiunile selectare și vizualizare definiție sunt acordate unui alt utilizator, beneficiarul poate vizualiza toate dependențele din Baza de date.

Utilizarea SQL Server Management Studio

pentru a vizualiza definiția unui declanșator DML

  1. în Object Explorer, conectați-vă la o instanță a motorului bazei de date și apoi extindeți acea instanță.

  2. extindeți baza de date dorită, extindeți tabelele, apoi extindeți tabelul care conține declanșatorul pentru care doriți să vizualizați definiția.

  3. extindeți declanșatoarele, faceți clic cu butonul din dreapta pe declanșatorul dorit, apoi faceți clic pe Modificare. Definiția declanșatorului DML apare în fereastra de interogare.

pentru a vizualiza dependențele unui declanșator DML

  1. în Object Explorer, conectați-vă la o instanță a motorului bazei de date și apoi extindeți acea instanță.

  2. extindeți baza de date dorită, extindeți tabelele, apoi extindeți tabelul care conține declanșatorul și dependențele sale pe care doriți să le vizualizați.

  3. extindeți declanșatoarele, faceți clic cu butonul din dreapta pe declanșatorul dorit, apoi faceți clic pe Vizualizare dependențe.

  4. în fereastra dependențe obiect, pentru a vizualiza obiectele care depind de declanșatorul DML, selectați obiecte care depind de <numele declanșatorului DML>. Obiectele apar în zona dependențe.

    pentru a vizualiza obiectele de care depinde LMD, selectați obiecte de care depinde < numele declanșatorului LMD>. Obiectele apar în zona dependențe. Extindeți fiecare nod pentru a vedea toate obiectele.

  5. pentru a obține informații despre un obiect care apare în zona dependențe, faceți clic pe obiect. În câmpul obiect selectat, informațiile sunt furnizate în casetele Nume, tip și tip dependență.

  6. pentru a închide fereastra dependențe obiect, faceți clic pe OK.

utilizarea Transact-SQL

pentru a vizualiza definiția unui declanșator DML

  1. Conectați-vă la motorul bazei de date.

  2. din bara Standard, faceți clic pe Interogare nouă.

  3. copiați și lipiți unul dintre următoarele exemple în fereastra de interogare și faceți clic pe Executare. Fiecare exemplu arată cum puteți vizualiza definiția declanșatorului iuPerson.

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

pentru a vizualiza dependențele unui declanșator DML

  1. Conectați-vă la motorul bazei de date.

  2. din bara Standard, faceți clic pe Interogare nouă.

  3. copiați și lipiți unul dintre următoarele exemple în fereastra de interogare și faceți clic pe Executare. Fiecare exemplu arată cum puteți vizualiza dependențele declanșatorului iuPerson.

USE AdventureWorks2012; 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 

pentru a vizualiza informații despre declanșatoarele LMD în baza de date

  1. Conectați-vă la motorul bazei de date.

  2. din bara Standard, faceți clic pe Interogare nouă.

  3. copiați și lipiți unul dintre următoarele exemple în fereastra de interogare și faceți clic pe Executare. Fiecare exemplu arată cum puteți vizualiza informații despre declanșatoarele LMD (TR) în baza de date.

USE AdventureWorks2012; GO SELECT name, parent_id, create_date, modify_date, is_instead_of_trigger FROM sys.triggers WHERE type = 'TR'; GO 
USE AdventureWorks2012; 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 AdventureWorks2012; GO SELECT OBJECTPROPERTY(OBJECT_ID(N'Person.iuPerson'), 'ExecIsInsteadOfTrigger'); GO 

pentru a vizualiza informații despre evenimentele care declanșează un declanșator LMD

  1. Conectați-vă la motorul bazei de date.

  2. din bara Standard, faceți clic pe Interogare nouă.

  3. copiați și lipiți unul dintre următoarele exemple în fereastra de interogare și faceți clic pe Executare. Fiecare exemplu arată cum puteți vizualiza evenimentele care declanșează declanșatorul iuPerson.

USE AdventureWorks2012; 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 AdventureWorks2012; GO SELECT object_id, type,is_first, is_last FROM sys.trigger_events WHERE object_id = OBJECT_ID('Person.iuPerson'); GO 

Vezi de asemenea

creare TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
activare TRIGGER (Transact-SQL)
dezactivare TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL)
alter TRIGGER (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
SYS.declanșatoare (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)

Write a Comment

Adresa ta de email nu va fi publicată.