DISABLE TRIGGER (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Deshabilita un desencadenador DML, DDL o logon.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL


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

schema_name

Es el nombre del esquema al que pertenece el desencadenador. schema_name no se puede especificar para desencadenadores DDL o logon.

trigger_name

Es el nombre del desencadenador que se va a deshabilitar.

ALL

Indica que todos los desencadenadores definidos en el ámbito de la cláusula ON están deshabilitados.

ms189748.Caution(es-es,SQL.90).gifAdvertencia:
SQL Server crea desencadenadores en las bases de datos que se han publicado para la réplica de mezcla. Si se especifica ALL en las bases de datos publicadas, se deshabilitarán los desencadenadores y se interrumpirá la réplica. Compruebe que las base de datos actual no se publica para réplica de mezcla antes de especificar ALL.

object_name

Es el nombre de la tabla o 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

En el caso de un desencadenador DDL o logon, indica que trigger_name se creó o se modificó para ejecutarse en el ámbito del servidor.

De forma predeterminada, los desencadenadores se habilitan cuando se crean. Al deshabilitar un desencadenador no se quita. Sigue siendo un objeto de la base de datos actual. Sin embargo, el desencadenador no se activa cuando se ejecuta una instrucción Transact-SQL en la que se programó. Los desencadenadores se pueden volver a habilitar con ENABLE TRIGGER. Los desencadenadores DML definidos en tablas también se pueden habilitar o deshabilitar mediante el uso de ALTER TABLE.

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

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

A. Deshabilitar un desencadenador DML en una tabla

En el ejemplo siguiente se deshabilita el desencadenador uAddress, que se creó en la tabla Address.

USE AdventureWorks;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO

B. Deshabilitar un desencadenador DDL

En el ejemplo siguiente se crea un desencadenador DDL safety, con ámbito en la base de datos, y después se deshabilita.

IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
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. Deshabilitar todos los desencadenadores que se definieron con el mismo ámbito

En el ejemplo siguiente se deshabilitan todos los desencadenadores DDL y logon que se crearon en el ámbito del servidor.

USE AdventureWorks;
GO
DISABLE Trigger ALL ON ALL SERVER;
GO

Versión Historial

12 de diciembre de 2006

Contenido nuevo:
  • Se ha agregado información a lo largo del tema acerca de los desencadenadores logon, que se introdujeron en el Service Pack 2 de SQL Server 2005.

Adiciones de comunidad

AGREGAR
Mostrar: