Получение сведений о триггерах DMLGet Information About DML Triggers

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

В этом разделе описывается получение сведений о триггерах DML в SQL Server 2019 (15.x)SQL Server 2019 (15.x) с помощью среды SQL Server Management StudioSQL Server Management Studio или Transact-SQLTransact-SQL.This topic describes how to get information about DML triggers in SQL Server 2019 (15.x)SQL Server 2019 (15.x) by using SQL Server Management StudioSQL Server Management Studio or Transact-SQLTransact-SQL. К таким сведениям относятся типы триггеров для таблицы, имя триггера, владелец триггера и дата создания или изменения триггера.This information can include the types of triggers on a table, the name of a trigger, its owner and the date it was created or modified. Если триггер не был зашифрован во время создания, то можно получить его определение.If the trigger was not encrypted when it was created, you obtain the definition of the trigger. По определению вы можете понять, каким образом триггер влияет на таблицу, для которой он определен.You can use the definition to help you understand how a trigger affects the table up on which it is defined. Кроме того, можно определить, какие объекты используются данным триггером.Also, you can find out the objects that a specific trigger uses. Эти сведения могут быть использованы для выявления объектов, которые воздействуют на триггер, если они изменяются или удаляются из базы данных.With this information, you can identify the objects that affect the trigger if they are changed or deleted in the database.

В этом разделеIn This Topic

Перед началомBefore You Begin

безопасностьSecurity

PermissionsPermissions

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_eventssys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
Видимость метаданных в представлениях каталогов ограничивается защищаемыми объектами, которыми пользователь владеет или на которые ему были предоставлены разрешения.The visibility of the metadata in catalog views is limited to securables that a user either owns or on which the user has been granted some permission. Дополнительные сведения см. в разделе Metadata Visibility Configuration.For more information, see Metadata Visibility Configuration.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptextOBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
Необходимо быть членом роли public.Requires membership in the public role. Определения пользовательских объектов видимы владельцу объекта или получателям, которым предоставлено одно из следующих разрешений: ALTER, CONTROL, TAKE OWNERSHIP или VIEW DEFINITION.The definition of user objects is visible to the object owner or grantees that have any one of the following permissions: ALTER, CONTROL, TAKE OWNERSHIP, or VIEW DEFINITION. Эти разрешения неявно предоставляются членам предопределенных ролей базы данных db_owner, db_ddladminи db_securityadmin .These permissions are implicitly held by members of the db_owner, db_ddladmin, and db_securityadmin fixed database roles.

sys.sql_expression_dependenciessys.sql_expression_dependencies
Необходимо разрешение VIEW DEFINITION в базе данных и разрешение SELECT на представление sys.sql_expression_dependencies в базе данных.Requires VIEW DEFINITION permission on the database and SELECT permission on sys.sql_expression_dependencies for the database. По умолчанию разрешение SELECT предоставляется только членам предопределенной роли базы данных db_owner .By default, SELECT permission is granted only to members of the db_owner fixed database role. Если разрешения SELECT и VIEW DEFINITION предоставлены другому пользователю, он может просматривать все зависимости в базе данных.When SELECT and VIEW DEFINITION permissions are granted to another user, the grantee can view all dependencies in the database.

Использование среды SQL Server Management StudioUsing SQL Server Management Studio

Просмотр определения триггера DMLTo view the definition of a DML trigger

  1. В обозревателе объектовподключитесь к экземпляру компонента Компонент Database EngineDatabase Engine и разверните его.In Object Explorer, connect to an instance of Компонент Database EngineDatabase Engine and then expand that instance.

  2. Разверните нужную базу данных, разверните узел Таблицы, а затем разверните таблицу, содержащую триггер, для которого нужно просмотреть определение.Expand the database that you want, expand Tables, and then expand the table that contains the trigger for which you want to view the definition.

  3. Разверните узел Триггеры, щелкните правой кнопкой мыши нужный триггер и выберите команду Изменить.Expand Triggers, right-click the trigger you want, and then click Modify. В окне запроса появится определение триггера DML.The definition of the DML trigger appears in the query window.

Просмотр зависимостей триггера DMLTo view the dependencies of a DML trigger

  1. В обозревателе объектовподключитесь к экземпляру компонента Компонент Database EngineDatabase Engine и разверните его.In Object Explorer, connect to an instance of Компонент Database EngineDatabase Engine and then expand that instance.

  2. Разверните нужную базу данных, разверните узел Таблицы, а затем разверните таблицу, содержащую триггер и зависимости, которые нужно просмотреть.Expand the database that you want, expand Tables, and then expand the table that contains the trigger and its dependencies that you want to view.

  3. Разверните узел Триггеры, щелкните правой кнопкой мыши нужный триггер и выберите команду Просмотреть зависимости.Expand Triggers, right-click the trigger you want, and then click View Dependencies.

  4. Для просмотра объектов, зависящих от триггера DML, в окне Зависимости объектов выберите Объекты, зависящие от <имя триггера DML> .In the Object Dependencies window, to view the objects that depend on the DML trigger, select Objects that depend on <DML trigger name>. Объекты отображаются в области Зависимости .The objects appear in the Dependencies area.

    Чтобы просмотреть объекты, от которых зависит триггер DML, выберите пункт Объекты, от которых зависит <имя триггера DML> .To view the objects on which the DML depends, select Objects on which <DML trigger name> depends. Объекты отображаются в области Зависимости .The objects appear in the Dependencies area. Разверните каждый узел, чтобы просмотреть все объекты.Expand each node to see all the objects.

  5. Чтобы получить сведения об объекте, который появляется в области Зависимости , щелкните его.To obtain information about an object that appears in the Dependencies area, click the object. В поле Выбранный объект сведения указываются в полях Имя, Типи Тип зависимости .In the Selected object field, information is provided in the Name, Type, and Dependency type boxes.

  6. Нажмите кнопку ОК , чтобы закрыть окно Зависимости объекта.To close the Object Dependencies window, click OK.

Использование Transact-SQLUsing Transact-SQL

Просмотр определения триггера DMLTo view the definition of a DML trigger

  1. Установите соединение с компонентом Компонент Database EngineDatabase Engine.Connect to the Компонент Database EngineDatabase Engine.

  2. На панели «Стандартная» нажмите Создать запрос.From the Standard bar, click New Query.

  3. Скопируйте и вставьте один из следующих примеров в окно запроса и нажмите кнопку Выполнить.Copy and paste one of the following examples into the query window and click Execute. В каждом примере показано, как можно просмотреть определение триггера iuPerson .Each example shows how you can view the definition of the iuPerson trigger.

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  
  

Просмотр зависимостей триггера DMLTo view the dependencies of a DML trigger

  1. Установите соединение с компонентом Компонент Database EngineDatabase Engine.Connect to the Компонент Database EngineDatabase Engine.

  2. На панели «Стандартная» нажмите Создать запрос.From the Standard bar, click New Query.

  3. Скопируйте и вставьте один из следующих примеров в окно запроса и нажмите кнопку Выполнить.Copy and paste one of the following examples into the query window and click Execute. В каждом примере показано, как можно просмотреть зависимости триггера iuPerson .Each example shows how you can view the dependencies of 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  
  

Просмотр сведений о триггерах DML в базе данныхTo view information about DML triggers in the database

  1. Установите соединение с компонентом Компонент Database EngineDatabase Engine.Connect to the Компонент Database EngineDatabase Engine.

  2. На панели «Стандартная» нажмите Создать запрос.From the Standard bar, click New Query.

  3. Скопируйте и вставьте один из следующих примеров в окно запроса и нажмите кнопку Выполнить.Copy and paste one of the following examples into the query window and click Execute. В каждом примере показано, как можно просмотреть сведения о триггерах DML (TR) в базе данных.Each example shows how you can view information about DML triggers (TR) in the database.

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  
  

Просмотр сведений о событиях, которые вызывают срабатывание триггера DMLTo view information about events that fire a DML trigger

  1. Установите соединение с компонентом Компонент Database EngineDatabase Engine.Connect to the Компонент Database EngineDatabase Engine.

  2. На панели «Стандартная» нажмите Создать запрос.From the Standard bar, click New Query.

  3. Скопируйте и вставьте один из следующих примеров в окно запроса и нажмите кнопку Выполнить.Copy and paste one of the following examples into the query window and click Execute. В каждом примере показано, как можно просмотреть события, которые вызывают срабатывание триггера iuPerson .Each example shows how you can view the events that fire the iuPerson trigger.

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  

См. также:See Also

CREATE TRIGGER (Transact-SQL) CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL) DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL) ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL) DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
sp_rename (Transact-SQL) sp_rename (Transact-SQL)
ALTER TRIGGER (Transact-SQL) ALTER TRIGGER (Transact-SQL)
sp_help (Transact-SQL) sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL) sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL) sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL) sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL) sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL) sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL) sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL) sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL) sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL) sys.server_assembly_modules (Transact-SQL)
OBJECTPROPERTY (Transact-SQL) OBJECTPROPERTY (Transact-SQL)
OBJECT_DEFINITION (Transact-SQL)OBJECT_DEFINITION (Transact-SQL)