információ a DML triggerekről

  • jogcímcsoport
  • 12/17/2021
  • 4 perc olvasni
    • M
    • r
    • c
    • p
hasznos ez az oldal?

köszönöm.

vonatkozik: yes SQL Server (az összes támogatott verzió) IgenAzure SQL Database

ez a témakör azt ismerteti, hogyan szerezhet információt az SQL Server DML-eseményindítóiról az SQL Server Management Studio vagy a Transact-SQL használatával. Ez az információ magában foglalhatja az eseményindítók típusát egy táblán, az eseményindító nevét, tulajdonosát, valamint a létrehozás vagy módosítás dátumát. Ha a trigger nem volt titkosítva a létrehozásakor, akkor megkapja a trigger meghatározását. A definíció segítségével megértheti, hogy egy trigger hogyan befolyásolja azt a táblázatot, amelyen meg van határozva. Megtudhatja azokat az objektumokat is, amelyeket egy adott trigger használ. Ezzel az információval azonosíthatja azokat az objektumokat, amelyek befolyásolják a triggert, ha azokat megváltoztatják vagy törlik az adatbázisban.

ebben a témában

  • mielőtt elkezdené:

    biztonság

  • ahhoz, hogy információt DML kiváltó, segítségével:

    SQL Server Management Studio

    Transact-SQL

Mielőtt elkezdené

biztonság

engedélyek

sys.sql.modulok, sys.tárgy, sys.triggerek, sys.események, sys.trigger_events
a metaadatok katalógusnézetekben való láthatósága azokra a biztonsági elemekre korlátozódik, amelyek a felhasználó tulajdonában vannak, vagy amelyekre a felhasználó engedélyt kapott. További információ: metaadatok láthatóságának konfigurálása.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
nyilvános szerepkörben való tagságot igényel. A felhasználói objektumok definíciója látható az objektum tulajdonosa vagy kedvezményezettjei számára, akik a következő engedélyek bármelyikével rendelkeznek: ALTER, CONTROL, take OWNERSHIP vagy VIEW DEFINITION. Ezeket az engedélyeket implicit módon a db_owner, db_ddladmin és db_securityadmin rögzített adatbázis szerepkörök tagjai birtokolják.

sys.sql_expression_dependencies
NÉZETDEFINÍCIÓS engedélyt igényel az adatbázisban, majd válassza a sys engedélyét.sql_expression_dependencies az adatbázishoz. Alapértelmezés szerint a SELECT engedélyt csak a db_owner rögzített adatbázis szerepkör tagjai kapják meg. Ha a kijelölés és a nézet definíciós engedélyeket egy másik felhasználó kapja meg, a kedvezményezett megtekintheti az adatbázis összes függőségét.

az SQL Server Management Studio használata

a DML trigger definíciójának megtekintéséhez

  1. az Object Explorerben csatlakozzon az adatbázismotor egy példányához, majd bontsa ki azt a példányt.

  2. bontsa ki a kívánt adatbázist, bontsa ki a táblázatokat, majd bontsa ki azt a táblát, amely tartalmazza azt az indítót, amelynek a definícióját meg szeretné tekinteni.

  3. bontsa ki az Eseményindítók elemet, kattintson a jobb gombbal a kívánt eseményindítóra, majd kattintson a Módosítás parancsra. A DML trigger meghatározása megjelenik a lekérdezési ablakban.

a DML trigger függőségeinek megtekintése

  1. az Object Explorerben csatlakozzon az adatbázismotor egy példányához, majd bontsa ki azt a példányt.

  2. bontsa ki a kívánt adatbázist, bontsa ki a táblázatokat, majd bontsa ki az indítót és a megtekinteni kívánt függőségeket tartalmazó táblát.

  3. bontsa ki az Eseményindítók elemet, kattintson a jobb gombbal a kívánt eseményindítóra, majd kattintson a függőségek megtekintése parancsra.

  4. az Objektumfüggőségek ablakban a DML-triggertől függő objektumok megtekintéséhez jelölje ki a <DML-trigger neve>objektumtól függő objektumokat. Az objektumok a függőségek területen jelennek meg.

    azon objektumok megtekintéséhez, amelyektől a DML függ, jelölje ki azokat az objektumokat, amelyektől a < DML trigger neve> függ. Az objektumok a függőségek területen jelennek meg. Bontsa ki az egyes csomópontokat az összes objektum megtekintéséhez.

  5. ha információt szeretne kapni a függőségek területen megjelenő objektumról, kattintson az objektumra. A kijelölt objektum mezőben az információk a név, típus és függőség típusa mezőben jelennek meg.

  6. az Objektumfüggőségek ablak bezárásához kattintson az OK gombra.

a Transact-SQL

használata a DML trigger definíciójának megtekintéséhez

  1. csatlakozzon az adatbázis-motorhoz.

  2. a normál sávon kattintson az Új lekérdezés elemre.

  3. másolja és illessze be az alábbi példák egyikét a lekérdezési ablakba, majd kattintson a Végrehajtás gombra. Minden példa bemutatja, hogyan tekintheti meg a iuPerson trigger definícióját.

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 

a DML trigger függőségeinek megtekintése

  1. csatlakozzon az adatbázis-motorhoz.

  2. a normál sávon kattintson az Új lekérdezés elemre.

  3. másolja és illessze be az alábbi példák egyikét a lekérdezési ablakba, majd kattintson a Végrehajtás gombra. Minden példa bemutatja, hogyan tekintheti meg a iuPerson trigger függőségeit.

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 

a DML-eseményindítókkal kapcsolatos információk megtekintése az adatbázisban

  1. csatlakozzon az adatbázis-motorhoz.

  2. a normál sávon kattintson az Új lekérdezés elemre.

  3. másolja és illessze be az alábbi példák egyikét a lekérdezési ablakba, majd kattintson a Végrehajtás gombra. Minden példa bemutatja, hogyan tekintheti meg a DML-eseményindítókkal (TR) kapcsolatos információkat az adatbázisban.

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 

DML-triggert kiváltó eseményekkel kapcsolatos információk megtekintése

  1. csatlakozzon az adatbázis-motorhoz.

  2. a normál sávon kattintson az Új lekérdezés elemre.

  3. másolja és illessze be az alábbi példák egyikét a lekérdezési ablakba, majd kattintson a Végrehajtás gombra. Minden példa bemutatja, hogyan tekintheti meg az iuPerson triggert kiváltó eseményeket.

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 

Lásd még:

TRIGGER létrehozása (Transact-SQL)
DROP TRIGGER (Transact-SQL)
TRIGGER engedélyezése (Transact-SQL)
eseményadatok letiltása (Transact-SQL)
sp_rename (Transact-SQL)
Alter TRIGGER (Transact-SQL)
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
SYS.triggerek (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

Az e-mail-címet nem tesszük közzé.