Uzyskaj informacje o wyzwalaczach DML

  • artykuł
  • 12/17/2021
  • 4 protokół do czytania
    • M
    • r
    • c
    • p
czy ta strona jest pomocna?

Dziękuję.

dotyczy: yesSQL Server (Wszystkie obsługiwane wersje) tak Azure SQL Database

ten temat opisuje, jak uzyskać informacje o wyzwalaczach DML w SQL Server za pomocą SQL Server Management Studio lub Transact-SQL. Informacje te mogą obejmować typy wyzwalaczy w tabeli, nazwę wyzwalacza, jego właściciela oraz datę jego utworzenia lub modyfikacji. Jeśli wyzwalacz nie był zaszyfrowany podczas jego tworzenia, można uzyskać definicję wyzwalacza. Możesz użyć tej definicji, aby pomóc ci zrozumieć, w jaki sposób WYZWALACZ wpływa na tabelę, na której jest zdefiniowany. Możesz także dowiedzieć się, jakich obiektów używa dany WYZWALACZ. Dzięki tym informacjom można zidentyfikować obiekty, które wpływają na WYZWALACZ, jeśli zostaną zmienione lub usunięte w bazie danych.

w tym temacie

  • zanim zaczniesz:

    bezpieczeństwo

  • aby uzyskać informacje o wyzwalaczach DML, użyj:

    SQL Server Management Studio

    Transact-SQL

zanim zaczniesz

bezpieczeństwo

uprawnienia

sys.sql.Moduły, sys.obiekt, sys.wyzwalacze, sys.wydarzenia, sys.trigger_events
widoczność metadanych w widokach katalogów jest ograniczona do zabezpieczeń, które użytkownik posiada lub na które otrzymał pozwolenie. Aby uzyskać więcej informacji, zobacz Konfiguracja widoczności metadanych.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
wymaga członkostwa w roli publicznej. Definicja obiektów użytkownika jest widoczna dla właściciela obiektu lub grantobiorców, którzy mają jedno z następujących uprawnień: Zmień, kontroluj, Przejmij własność lub Zobacz definicję. Uprawnienia te są domyślnie posiadane przez członków stałych ról baz danych db_owner, db_ddladmin i db_securityadmin.

sql_expression_dependencies
wymaga uprawnień definicji widoku w bazie danych i wyboru uprawnień w systemie.sql_expression_dependencies dla bazy danych. Domyślnie uprawnienia SELECT są przyznawane tylko członkom roli stałej bazy danych db_owner. Gdy uprawnienia wyboru i wyświetlania definicji zostaną przyznane innemu użytkownikowi, beneficjent może wyświetlić wszystkie zależności w bazie danych.

Korzystanie z SQL Server Management Studio

, aby wyświetlić definicję wyzwalacza DML

  1. w Eksploratorze obiektów połącz się z instancją silnika bazy danych, a następnie rozwiń tę instancję.

  2. rozwiń żądaną bazę danych, rozwiń tabele, a następnie rozwiń tabelę zawierającą wyzwalacz, dla którego chcesz wyświetlić definicję.

  3. rozwiń wyzwalacze, kliknij prawym przyciskiem myszy żądany WYZWALACZ, a następnie kliknij Modyfikuj. Definicja wyzwalacza DML pojawia się w oknie zapytania.

aby wyświetlić zależności wyzwalacza DML

  1. w Eksploratorze obiektów połącz się z instancją silnika bazy danych, a następnie rozwiń tę instancję.

  2. rozwiń żądaną bazę danych, rozwiń tabele, a następnie rozwiń tabelę zawierającą wyzwalacz i jego zależności, które chcesz wyświetlić.

  3. rozwiń wyzwalacze, kliknij prawym przyciskiem myszy żądany WYZWALACZ, a następnie kliknij Wyświetl zależności.

  4. w oknie zależności obiektów, aby wyświetlić obiekty zależne od wyzwalacza DML, zaznacz obiekty zależne od <nazwy wyzwalacza DML>. Obiekty pojawiają się w obszarze zależności.

    aby wyświetlić obiekty, od których zależy DML, wybierz obiekty, od których zależy < nazwa wyzwalacza DML>. Obiekty pojawiają się w obszarze zależności. Rozwiń każdy węzeł, aby zobaczyć wszystkie obiekty.

  5. aby uzyskać informacje o obiekcie, który pojawia się w obszarze zależności, kliknij obiekt. W polu zaznaczony obiekt informacje są dostarczane w polach Nazwa, typ i typ zależności.

  6. aby zamknąć okno zależności obiektów, kliknij OK.

Korzystanie z Transact-SQL

, aby wyświetlić definicję wyzwalacza DML

  1. Połącz się z silnikiem bazy danych.

  2. na standardowym pasku kliknij nowe zapytanie.

  3. skopiuj i wklej jeden z poniższych przykładów do okna zapytania i kliknij wykonaj. Każdy przykład pokazuje, jak można wyświetlić definicję wyzwalacza 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 

aby wyświetlić zależności wyzwalacza DML

  1. Połącz się z silnikiem bazy danych.

  2. na standardowym pasku kliknij nowe zapytanie.

  3. skopiuj i wklej jeden z poniższych przykładów do okna zapytania i kliknij wykonaj. Każdy przykład pokazuje, jak można wyświetlić zależności iuPerson trigger.

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 

aby wyświetlić informacje o wyzwalaczach DML w bazie danych

  1. Połącz się z silnikiem bazy danych.

  2. na standardowym pasku kliknij nowe zapytanie.

  3. skopiuj i wklej jeden z poniższych przykładów do okna zapytania i kliknij wykonaj. Każdy przykład pokazuje, jak można wyświetlić informacje o wyzwalaczach DML (TR) w bazie danych.

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 

aby wyświetlić informacje o zdarzeniach wywołujących WYZWALACZ DML

  1. Połącz się z silnikiem bazy danych.

  2. na standardowym pasku kliknij nowe zapytanie.

  3. skopiuj i wklej jeden z poniższych przykładów do okna zapytania i kliknij wykonaj. Każdy przykład pokazuje, jak można wyświetlić zdarzenia wywołujące WYZWALACZ 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 

Zobacz również

Utwórz TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
włącz TRIGGER (Transact-SQL)
wyłącz TRIGGER (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)

Write a Comment

Twój adres e-mail nie zostanie opublikowany.