ENABLE TRIGGER(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance
DML, DDL 또는 LOGON 트리거를 활성화합니다.
구문
ENABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
인수
schema_name
트리거가 속한 스키마의 이름입니다. schema_name은 DDL 또는 LOGON 트리거에 대해 지정될 수 없습니다.
trigger_name
활성화할 트리거의 이름입니다.
ALL
ON 절의 범위에서 정의한 모든 트리거를 활성화할 것임을 나타냅니다.
object_name
실행할 DML 트리거 trigger_name이 만들어진 테이블 또는 뷰의 이름입니다.
DATABASE
DDL 트리거의 경우 데이터베이스 범위에서 실행하도록 trigger_name을 만들거나 수정했음을 나타냅니다.
ALL SERVER
적용 대상: SQL Server 2008(10.0.x) 이상
DDL 트리거의 경우 서버 범위에서 실행하도록 trigger_name을 만들거나 수정했음을 나타냅니다. ALL SERVER는 로그온 트리거에도 적용됩니다.
참고
포함된 데이터베이스에서는 이 옵션을 사용할 수 없습니다.
설명
트리거를 활성화해도 트리거를 다시 만드는 것은 아닙니다. 비활성화된 트리거는 현재 데이터베이스 내에 여전히 개체로 존재하지만 실행하지는 않습니다. 트리거를 활성화하려면 트리거가 원래 프로그래밍된 Transact-SQL 문이 실행될 때 트리거가 실행되도록 합니다. 트리거는 DISABLE TRIGGER를 사용하여 비활성화됩니다. 테이블에 정의된 DML 트리거는 ALTER TABLE을 사용하여 비활성화되거나 활성화될 수도 있습니다.
사용 권한
DML 트리거를 활성화하려면 최소한 트리거가 만들어진 테이블이나 뷰에 대한 ALTER 권한이 필요합니다.
서버 범위(ON ALL SERVER)의 DDL 트리거 또는 LOGON 트리거를 활성화하려면 서버에 대한 CONTROL SERVER 권한이 필요합니다. 데이터베이스 범위(ON DATABASE)에서 DDL 트리거를 활성화하려면 최소한 현재 데이터베이스에 대한 ALTER ANY DATABASE DDL TRIGGER 권한이 필요합니다.
예제
A. 테이블의 DML 트리거 활성화
다음 예에서는 AdventureWorks 데이터베이스의 uAddress
테이블에서 만든 Address
트리거를 비활성화한 다음, 다시 활성화하는 방법을 보여 줍니다.
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
ENABLE 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
ENABLE TRIGGER safety ON DATABASE;
GO
C. 같은 범위에서 정의된 모든 트리거 활성화
다음 예에서는 서버 범위에서 만든 모든 DDL 트리거를 활성화합니다.
적용 대상: SQL Server 2008(10.0.x) 이상
ENABLE Trigger ALL ON ALL SERVER;
GO
참고 항목
DISABLE TRIGGER(Transact-SQL)
ALTER TRIGGER(Transact-SQL)
CREATE TRIGGER(Transact-SQL)
DROP TRIGGER(Transact-SQL)
sys.triggers(Transact-SQL)