DISABLE TRIGGER (Transact-SQL)

  • 05/10/2017
  • 2 minutos para leer
    • W
    • c
    • r
    • i
    • M
    • +7

Aplicable a: SQL Server (todas las versiones compatibles) Azure SQL Database

Desactiva un activador.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DISABLE TRIGGER { trigger_name | ALL } ON { object_name | DATABASE | ALL SERVER } 

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y anteriores, consulte la documentación de versiones anteriores.

Argumentos

nombre_esquema
Es el nombre del esquema al que pertenece el disparador. schema_name no se puede especificar para desencadenantes DDL o de inicio de sesión.

nombre_del_desencadenante
Es el nombre del desencadenante que se va a deshabilitar.

ALL
Indica que se deshabilitan todos los desencadenantes definidos en el ámbito de la cláusula ON.

Precaución

SQL Server crea desencadenantes en bases de datos que se publican para la replicación de fusión. Si se especifica TODO en las bases de datos publicadas, se desactivan estos activadores, lo que interrumpe la replicación. Verifique que la base de datos actual no esté publicada para la replicación por fusión antes de especificar ALL.

nombre_de_objeto
Es el nombre de la tabla o vista en la que se creó el desencadenante DML nombre_del_desencadenante para ejecutarse.

DATABASE
Para un desencadenante DDL, indica que nombre_del_desencadenante se creó o modificó para ejecutarse con el ámbito de la base de datos.

ALL SERVER
Se aplica a: SQL Server 2008 y posteriores.

Para un trigger DDL, indica que trigger_name fue creado o modificado para ejecutarse con el ámbito del servidor. ALL SERVER también se aplica a los desencadenantes de inicio de sesión.

Nota

Esta opción no está disponible en una base de datos contenida.

Observaciones

Los desencadenantes se habilitan por defecto cuando se crean. Desactivar un disparador no lo elimina. El disparador sigue existiendo como un objeto en la base de datos actual. Sin embargo, el disparador no se dispara cuando se ejecutan las sentencias Transact-SQL en las que fue programado. Los desencadenantes pueden volver a activarse mediante el uso de ENABLE TRIGGER. Los disparadores DML definidos en las tablas también se pueden deshabilitar o habilitar utilizando ALTER TABLE.

Cambiar el disparador utilizando la sentencia ALTER TRIGGER habilita el disparador.

Permisos

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

Para desactivar un trigger DDL con ámbito de servidor (ON ALL SERVER) o un trigger de inicio de sesión, un usuario debe tener permiso CONTROL SERVER en el servidor. Para desactivar un activador DDL con alcance de base de datos (ON DATABASE), como mínimo, un usuario debe tener permiso ALTER ANY DATABASE DDL TRIGGER en la base de datos actual.

Ejemplos

Los siguientes ejemplos se describen en la base de datos AdventureWorks2012.

A. Desactivación de un trigger DML en una tabla

El siguiente ejemplo desactiva el trigger uAddress que se creó en la tabla Person.

DISABLE TRIGGER Person.uAddress ON Person.Address; GO 

B. Desactivación de un desencadenante DDL

El siguiente ejemplo crea un desencadenante DDL safety con alcance de base de datos, y luego lo desactiva.

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. Desactivación de todos los disparadores que se definieron con el mismo ámbito

El siguiente ejemplo desactiva todos los disparadores DDL que se crearon en el ámbito del servidor.

DISABLE Trigger ALL ON ALL SERVER; GO 

Ver también

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada.