DISABLE TRIGGER (Transact-SQL)DISABLE TRIGGER (Transact-SQL)

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2008)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Consente di disabilitare un trigger.Disables a trigger.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

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

ArgomentiArguments

schema_nameschema_name
Nome dello schema a cui appartiene il trigger.Is the name of the schema to which the trigger belongs. schema_name non può essere specificato per i trigger DDL o logon.schema_name cannot be specified for DDL or logon triggers.

trigger_nametrigger_name
Nome del trigger che si desidera disabilitare.Is the name of the trigger to be disabled.

ALLALL
Disabilita tutti i trigger con l'ambito specificato nella clausola ON.Indicates that all triggers defined at the scope of the ON clause are disabled.

Attenzione

SQL ServerSQL Server crea trigger nei database pubblicati per la replica di tipo merge. creates triggers in databases that are published for merge replication. Se si specifica ALL nei database pubblicati, questi trigger vengono disabilitati e la replica viene ostacolata.Specifying ALL in published databases disables these triggers, which disrupts replication. Prima di utilizzare l'argomento ALL verificare che il database corrente non sia pubblicato per la replica di tipo merge.Verify that the current database is not published for merge replication before specifying ALL.

object_nameobject_name
È il nome della tabella o della vista in cui il trigger DML trigger_name è stato creato per l'esecuzione.Is the name of the table or view on which the DML trigger trigger_name was created to execute.

DATABASEDATABASE
Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito con ambito database.For a DDL trigger, indicates that trigger_name was created or modified to execute with database scope.

ALL SERVERALL SERVER
Si applica a: SQL Server 2008SQL Server 2008 tramite SQL Server 2017SQL Server 2017.Applies to: SQL Server 2008SQL Server 2008 through SQL Server 2017SQL Server 2017.

Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito con ambito server.For a DDL trigger, indicates that trigger_name was created or modified to execute with server scope. ALL SERVER si applica anche ai trigger LOGON.ALL SERVER also applies to logon triggers.

Nota

Questa opzione non è disponibile in un database indipendente.This option is not available in a contained database.

OsservazioniRemarks

Per impostazione predefinita, i trigger vengono abilitati in fase di creazione.Triggers are enabled by default when they are created. La disabilitazione di un trigger non ne comporta l'eliminazione.Disabling a trigger does not drop it. Il trigger continua a esistere come oggetto nel database correnteThe trigger still exists as an object in the current database. ma non viene attivato quando viene eseguita una qualsiasi istruzione Transact-SQLTransact-SQL in cui è stato programmato.However, the trigger does not fire when any Transact-SQLTransact-SQL statements on which it was programmed are executed. I trigger possono essere riabilitati tramite ENABLE TRIGGER.Triggers can be re-enabled by using ENABLE TRIGGER. I trigger DML definiti nelle tabelle possono essere anche essere abilitato o disabilitato utilizzando ALTER TABLE.DML triggers defined on tables can be also be disabled or enabled by using ALTER TABLE.

La modifica del trigger tramite la ALTER TRIGGER istruzione attiva il trigger.Changing the trigger by using the ALTER TRIGGER statement enables the trigger.

PermissionsPermissions

Per disabilitare un trigger DML, è necessario disporre almeno dell'autorizzazione ALTER per la tabella o la vista per cui il trigger è stato creato.To disable a DML trigger, at a minimum, a user must have ALTER permission on the table or view on which the trigger was created.

Per disabilitare un trigger DDL con ambito server (ON ALL SERVER) o un trigger LOGON, è necessario disporre dell'autorizzazione CONTROL SERVER per il server.To disable a DDL trigger with server scope (ON ALL SERVER) or a logon trigger, a user must have CONTROL SERVER permission on the server. Per disabilitare un trigger DDL con ambito database (ON DATABASE), è necessario disporre almeno dell'autorizzazione ALTER ANY DATABASE DDL TRIGGER nel database corrente.To disable a DDL trigger with database scope (ON DATABASE), at a minimum, a user must have ALTER ANY DATABASE DDL TRIGGER permission in the current database.

EsempiExamples

Negli esempi seguenti vengono descritti nel database AdventureWorks2012.The following examples are described in the AdventureWorks2012 database.

A.A. Disabilitazione di un trigger DML in una tabellaDisabling a DML trigger on a table

Nell'esempio seguente viene disabilitato il trigger uAddress creato per la tabella Address.The following example disables trigger uAddress that was created on table Address.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B.B. Disabilitazione di un trigger DDLDisabling a DDL trigger

Nell'esempio seguente viene creato e quindi disabilitato un trigger DDL safety con ambito database.The following example creates a DDL trigger safety with database scope, and then disables it.

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.C. Disabilitazione di tutti i trigger definiti con lo stesso ambitoDisabling all triggers that were defined with the same scope

Nell'esempio seguente vengono disabilitati tutti i trigger DDL creati nell'ambito del server.The following example disables all DDL triggers that were created at the server scope.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

Vedere ancheSee Also

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