Partilhar via


DESATIVAR TRIGGER (Transact-SQL)

Aplica-se a:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de dados SQL no Microsoft Fabric

Desativa um gatilho.

Transact-SQL convenções de sintaxe

Sintaxe

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

Arguments

schema_name
É o nome do esquema ao qual o gatilho pertence. schema_name não pode ser especificado para gatilhos DDL ou de logon.

trigger_name
É o nome do gatilho a desativar.

ALL
Indica que todos os gatilhos definidos no âmbito da cláusula ON estão desativados.

Atenção

O SQL Server cria gatilhos em bases de dados que são publicados para replicação de fusões. Especificar TODOS nas bases de dados publicadas desativa estes gatilhos, o que prejudica a replicação. Verifique se a base de dados atual não está publicada para replicação de fusão antes de especificar ALL.

object_name
É o nome da tabela ou vista onde o disparador DML trigger_name foi criado para executar.

DATABASE
Para um disparador DDL, indica que trigger_name foi criado ou modificado para ser executado com o âmbito da base de dados.

TODO O SERVIDOR
Aplica-se a: SQL Server 2008 (10.0.x) e posterior.

Para um disparador DDL, indica que trigger_name foi criado ou modificado para executar com o âmbito do servidor. ALL SERVER também se aplica aos gatilhos de logon.

Observação

Esta opção não está disponível numa base de dados contida.

Observações

Os gatilhos são ativados por defeito quando são criados. Desativar um gatilho não o elimina. O gatilho ainda existe como um objeto no banco de dados atual. No entanto, o gatilho não é ativado quando são executadas quaisquer Transact-SQL instruções sobre as quais foi programado. Os gatilhos podem ser reativados usando ENABLE TRIGGER. Os gatilhos DML definidos em tabelas também podem ser desativados ou ativados usando o ALTER TABLE.

Alterar o trigger usando a instrução ALTER TRIGGER ativa o trigger.

Permissions

Para desativar um disparador DML, no mínimo, o utilizador deve ter permissão ALTER na tabela ou vista onde o disparador foi criado.

Para desativar um trigger DDL com o âmbito do servidor (EM TODOS OS SERVIDORES) ou um trigger de logon, o utilizador deve ter permissão CONTROL SERVER sobre o servidor. Para desativar um disparador DDL com âmbito de base de dados (ON DATABASE), no mínimo, o utilizador deve ter ALTERAR QUALQUER PERMISSÃO DE DISPARO DDL na base de dados atual.

Examples

Os exemplos de código neste artigo usam o banco de dados de exemplo AdventureWorks2025 ou AdventureWorksDW2025, que pode ser descarregado da página inicial de Exemplos e Projetos da Comunidade do Microsoft SQL Server.

A. Desativar um gatilho DML numa tabela

O exemplo seguinte desativa o gatilho uAddress criado na tabela Person.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B. Desativar um gatilho DDL

O exemplo seguinte cria um gatilho safety DDL com âmbito de base de dados e depois desativa-o.

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. Desativar todos os gatilhos definidos com o mesmo âmbito

O exemplo seguinte desativa todos os gatilhos DDL que foram criados no âmbito do servidor.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

Ver também

ATIVAR TRIGGER (Transact-SQL)
ALTERAR DISPARADOR (Transact-SQL)
CRIAR GATILHO (Transact-SQL)
GATILHO DE QUEDA (Transact-SQL)
sys.triggers (Transact-SQL)