DML 트리거에 대한 정보 가져오기Get Information About DML Triggers

이 항목에서는 SQL Server 2017SQL Server 2017 에서 SQL Server Management StudioSQL Server Management Studio 또는 Transact-SQLTransact-SQL을 사용하여 DML 트리거에 대한 정보를 얻는 방법에 대해 설명합니다.This topic describes how to get information about DML triggers in SQL Server 2017SQL Server 2017 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

사용 권한 Permissions

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_ddladmindb_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 권한과 데이터베이스의 sys.sql_expression_dependencies 에 대한 SELECT 권한이 필요합니다.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 Studio 사용 Using SQL Server Management Studio

DML 트리거의 정의를 보려면To view the definition of a DML trigger

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database 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.

DML 트리거의 종속성을 보려면To view the dependencies of a DML trigger

  1. 개체 탐색기에서 데이터베이스 엔진Database Engine 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.In Object Explorer, connect to an instance of 데이터베이스 엔진Database 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-SQL 사용 Using Transact-SQL

DML 트리거의 정의를 보려면To view the definition of a DML trigger

  1. 데이터베이스 엔진Database Engine에 연결합니다.Connect to the 데이터베이스 엔진Database 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  

DML 트리거의 종속성을 보려면To view the dependencies of a DML trigger

  1. 데이터베이스 엔진Database Engine에 연결합니다.Connect to the 데이터베이스 엔진Database 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 Engine에 연결합니다.Connect to the 데이터베이스 엔진Database 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  

DML 트리거를 실행하는 이벤트에 대한 정보를 보려면To view information about events that fire a DML trigger

  1. 데이터베이스 엔진Database Engine에 연결합니다.Connect to the 데이터베이스 엔진Database 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)