다음을 통해 공유


DML 트리거에 대한 정보 가져오기

적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance

이 항목에서는 SQL Server Management Studio 또는 Transact-SQL을 사용하여 SQL Server의 DML 트리거에 대한 정보를 가져오는 방법에 대해 설명합니다. 이 정보에는 테이블의 트리거 유형, 트리거 이름, 트리거의 소유자 및 트리거가 생성 또는 수정된 날짜가 포함될 수 있습니다. 트리거가 생성될 때 암호화되지 않은 경우 트리거의 정의를 가져옵니다. 이 정의를 사용하여 테이블에 정의된 트리거가 해당 테이블에 어떠한 영향을 주는지를 이해할 수 있습니다. 또한 특정 트리거가 사용하는 개체도 확인할 수 있습니다. 이 정보를 통해 데이터베이스에서 트리거가 변경되거나 삭제된 경우 트리거에 영향을 미치는 개체를 식별할 수 있습니다.

항목 내용

시작하기 전에

보안

사용 권한

sys.sql.modules, sys.object, sys.triggers, sys.events, sys.trigger_events
카탈로그 뷰에서 메타데이터의 가시성은 사용자가 소유하고 있거나 사용자에게 일부 권한이 부여된 보안 항목으로 제한됩니다. 자세한 내용은 Metadata Visibility Configuration을 참조하세요.

OBJECT_DEFINITION, OBJECTPROPERTY, sp_helptext
public 역할의 멤버 자격이 필요합니다. 개체 소유자나 ALTER, CONTROL, TAKE OWNERSHIP 또는 VIEW DEFINITION 권한 중 하나를 부여받은 사람은 사용자 개체 정의를 볼 수 있습니다. 이 권한은 db_owner, db_ddladmindb_securityadmin 고정 데이터베이스 역할의 멤버가 암시적으로 보유합니다.

sys.sql_expression_dependencies
데이터베이스에 대한 뷰 정의 권한과 데이터베이스에 대한 sys.sql_expression_dependencies에 대한 SELECT 권한이 필요합니다. 기본적으로 SELECT 권한은 db_owner 고정 데이터베이스 역할의 멤버에게만 부여됩니다. SELECT와 VIEW DEFINITION 권한을 다른 사용자에게 부여하면 피부여자는 데이터베이스의 모든 종속성을 볼 수 있습니다.

SQL Server Management Studio 사용

DML 트리거의 정의를 보려면

  1. 개체 탐색기에서 데이터베이스 엔진 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.

  2. 원하는 데이터베이스를 확장하고 테이블을 확장한 다음 정의를 확인할 트리거가 포함된 테이블을 확장합니다.

  3. 트리거를 확장하고 원하는 트리거를 마우스 오른쪽 버튼으로 클릭한 다음 수정을 클릭합니다. DML 트리거의 정의가 쿼리 창에 나타납니다.

DML 트리거의 종속성을 보려면

  1. 개체 탐색기에서 데이터베이스 엔진 의 인스턴스에 연결한 다음 해당 인스턴스를 확장합니다.

  2. 원하는 데이터베이스를 확장하고 테이블을 확장한 다음 확인할 트리거와 해당 트리거의 종속성이 포함된 테이블을 확장합니다.

  3. 트리거를 확장하고 원하는 트리거를 마우스 오른쪽 버튼으로 클릭한 다음 종속성 보기를 클릭합니다.

  4. 개체 종속성 창에서 DML 트리거에 종속된 개체를 보려면 <DML 트리거 이름>에 종속된 개체를 선택합니다. 개체가 종속성 영역에 나타납니다.

    DML이 종속된 개체를 확인하려면 <DML 트리거 이름>이 종속된 개체를 선택합니다. 개체가 종속성 영역에 나타납니다. 각 노드를 확장하여 모든 개체를 확인합니다.

  5. 종속성 영역에 표시되는 개체에 대한 정보를 얻으려면 해당 개체를 클릭합니다. 선택한 개체 필드에서 이름, 유형종속성 유형 상자에 정보가 제공됩니다.

  6. 개체 종속성 창을 닫으려면 확인을 클릭합니다.

Transact-SQL 사용

DML 트리거의 정의를 보려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예시 중 하나를 복사하여 쿼리 창에 붙여넣고 실행을 클릭합니다. 각 예시는 iuPerson 트리거의 정의를 보는 방법을 보여줍니다.

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

DML 트리거의 종속성을 보려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예시 중 하나를 복사하여 쿼리 창에 붙여넣고 실행을 클릭합니다. 각 예시는 트리거의 iuPerson 종속성을 보는 방법을 보여줍니다.

USE AdventureWorks2022;   
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 트리거에 대한 정보를 보려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예시 중 하나를 복사하여 쿼리 창에 붙여넣고 실행을 클릭합니다. 각 예시는 데이터베이스에서 DML 트리거(TR)에 대한 정보를 보는 방법을 보여줍니다.

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

DML 트리거를 실행하는 이벤트에 대한 정보를 보려면

  1. 데이터베이스 엔진에 연결합니다.

  2. 표준 도구 모음에서 새 쿼리를 클릭합니다.

  3. 다음 예시 중 하나를 복사하여 쿼리 창에 붙여넣고 실행을 클릭합니다. 각 예시는 iuPerson 트리거를 실행하는 이벤트를 보는 방법을 보여줍니다.

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

참고 항목

CREATE TRIGGER(Transact-SQL)
DROP TRIGGER(Transact-SQL)
ENABLE TRIGGER(Transact-SQL)
DISABLE 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.trace_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)