다음을 통해 공유


DISABLE TRIGGER(Transact-SQL)

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

트리거를 비활성화합니다.

Transact-SQL 구문 표기 규칙

구문

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }  
ON { object_name | DATABASE | ALL SERVER } [ ; ]  

인수

schema_name
트리거가 속한 스키마의 이름입니다. schema_name은 DDL 또는 LOGON 트리거에 대해 지정될 수 없습니다.

trigger_name
비활성화할 트리거의 이름입니다.

ALL
ON 절의 범위에서 정의된 모든 트리거가 비활성화되었음을 나타냅니다.

주의

SQL Server는 병합 복제용으로 게시된 데이터베이스에서 트리거를 만듭니다. 게시된 데이터베이스에서 ALL을 지정하면 이 두 트리거가 비활성화되어 복제가 중단됩니다. ALL을 지정하려면 먼저 현재 데이터베이스가 병합 복제용으로 게시되었는지를 확인하세요.

object_name
실행할 DML 트리거 trigger_name이 만들어진 테이블 또는 뷰의 이름입니다.

DATABASE
DDL 트리거의 경우 데이터베이스 범위에서 실행하도록 trigger_name을 만들거나 수정했음을 나타냅니다.

ALL SERVER
적용 대상: SQL Server 2008(10.0.x) 이상

DDL 트리거의 경우 서버 범위에서 실행하도록 trigger_name을 만들거나 수정했음을 나타냅니다. ALL SERVER는 로그온 트리거에도 적용됩니다.

참고

포함된 데이터베이스에서는 이 옵션을 사용할 수 없습니다.

설명

트리거를 만들면 기본적으로 설정됩니다. 트리거를 비활성화하면 트리거는 삭제되지 않고 현재 데이터베이스의 개체로 남아 있습니다. 그러나 해당 트리거가 프로그래밍된 Transact-SQL 문을 실행하는 경우에도 트리거는 실행되지 않습니다. ENABLE TRIGGER를 사용하여 트리거를 다시 활성화할 수 있습니다. 테이블에 정의된 DML 트리거는 ALTER TABLE을 사용하여 비활성화되거나 활성화될 수도 있습니다.

ALTER TRIGGER 문을 사용하여 트리거를 변경하면 해당 트리거를 사용할 수 있습니다.

사용 권한

DML 트리거를 비활성화하려면 사용자에게 최소한 트리거를 만든 테이블 또는 뷰에 대한 ALTER 권한이 필요합니다.

서버 범위(ON ALL SERVER)의 DDL 트리거 또는 로그온 트리거를 비활성화하려면 서버에 대한 CONTROL SERVER 권한이 필요합니다. 데이터베이스 범위(ON DATABASE)에서 DDL 트리거를 비활성화하려면 사용자에게 최소한 현재 데이터베이스에서 ALTER ANY DATABASE DDL TRIGGER 권한이 필요합니다.

예제

이 문서의 Transact-SQL 코드 샘플은 AdventureWorks2022 또는 AdventureWorksDW2022 샘플 데이터베이스를 사용하며, 이는 Microsoft SQL Server 예시 및 커뮤니티 프로젝트(Microsoft SQL Server Samples and Community Projects) 홈 페이지에서 다운로드할 수 있습니다.

A. 테이블에 대한 DML 트리거 비활성화

다음 예에서는 uAddress 테이블에 만들어진 Person 트리거를 비활성화합니다.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B. DDL 트리거 비활성화

다음 예에서는 데이터베이스 범위에서 DDL 트리거 safety를 만든 후 비활성화합니다.

CREATE TRIGGER safety   
ON DATABASE   
FOR DROP_TABLE, ALTER_TABLE   
AS   
   PRINT 'You must disable Trigger "safety" to drop or alter tables!'   
   ROLLBACK;  
GO  
DISABLE TRIGGER safety ON DATABASE;  
GO  

C. 같은 범위에서 정의된 모든 트리거 비활성화

다음 예에서는 서버 범위에서 만든 모든 DDL 트리거를 비활성화합니다.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

참고 항목

ENABLE TRIGGER(Transact-SQL)
ALTER TRIGGER(Transact-SQL)
CREATE TRIGGER(Transact-SQL)
DROP TRIGGER(Transact-SQL)
sys.triggers(Transact-SQL)