Compartir por


ENABLE TRIGGER (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

Habilita un desencadenador DML, DDL o logon.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

schema_name
Es el nombre del esquema al que pertenece el desencadenador. schema_name no se puede especificar para los desencadenadores DDL o de inicio de sesión.

trigger_name
Es el nombre del desencadenador que se va a habilitar.

ALL
Indica que todos los desencadenadores del ámbito de la cláusula ON están habilitados.

object_name
Es el nombre de la tabla o la vista en la que se creó el desencadenador DML trigger_name para su ejecución.

DATABASE
En el caso de un desencadenador DDL, indica que trigger_name se creó o se modificó para ejecutarse en el ámbito de la base de datos.

ALL SERVER
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

En el caso de un desencadenador DDL, indica que trigger_name se creó o se modificó para ejecutarse en el ámbito de servidor. ALL SERVER también se aplica a los desencadenadores de inicio de sesión.

Nota:

Esta opción no está disponible en las bases de datos independientes.

Observaciones

Si se habilita un desencadenador, no se vuelve a crear. Un desencadenador deshabilitado sigue existiendo como objeto en la base de datos actual, pero no se activa. La habilitación de un desencadenador hace que se active cuando se ejecute cualquier instrucción Transact-SQL en que se programó originalmente. Los desencadenadores se deshabilitan con DISABLE TRIGGER. Los desencadenadores DML definidos en tablas también se pueden habilitar o deshabilitar mediante el uso de ALTER TABLE.

Permisos

Para habilitar un desencadenador DML, como mínimo, el usuario debe tener permiso ALTER en la tabla o vista en la que se creó el desencadenador.

Para habilitar un desencadenador DDL con ámbito del servidor (ON ALL SERVER) o un desencadenador logon, el usuario debe tener el permiso CONTROL SERVER en el servidor. Para habilitar un desencadenador DDL con ámbito de la base de datos (ON DATABASE), un usuario debe tener permiso ALTER ANY DATABASE DDL TRIGGER en la base de datos actual.

Ejemplos

A. Habilitar un desencadenador DML en una tabla

En este ejemplo se deshabilita el desencadenador uAddress que se creó en la tabla Address de la base de datos AdventureWorks y, después, se habilita.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  
ENABLE Trigger Person.uAddress ON Person.Address;  
GO  

B. Habilitar un desencadenador DDL

En este ejemplo se crea un desencadenador DDL safety con ámbito de base de datos y, después, se deshabilita y se habilita.

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. Habilitar todos los desencadenadores que se definieron con el mismo ámbito

En el ejemplo siguiente se habilitan todos los desencadenadores DDL creados en el ámbito del servidor.

Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

ENABLE Trigger ALL ON ALL SERVER;  
GO  

Consulte también

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