Esporta (0) Stampa
Espandi tutto
Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

DISABLE TRIGGER (Transact-SQL)

Consente di disabilitare un trigger.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Si applica a: SQL Server (da SQL Server 2008 alla versione corrente), Database SQL di Windows Azure (dalla versione iniziale alla versione corrente).

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

schema_name

Nome dello schema a cui appartiene il trigger. schema_name non può essere specificato per trigger DDL o LOGON.

trigger_name

Nome del trigger che si desidera disabilitare.

ALL

Disabilita tutti i trigger con l'ambito specificato nella clausola ON.

Nota di attenzione Attenzione

SQL Server crea trigger nei database pubblicati per la replica di tipo merge. Se si specifica ALL nei database pubblicati, questi trigger vengono disabilitati e la replica viene ostacolata. Prima di utilizzare l'argomento ALL verificare che il database corrente non sia pubblicato per la replica di tipo merge.

object_name

Nome della tabella o della vista su cui il trigger DML trigger_name deve essere eseguito.

DATABASE

Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito con l'ambito del database.

ALL SERVER

Si applica a: SQL Server 2008 tramite SQL Server 2014.

Per un trigger DDL, indica che trigger_name è stato creato o modificato per essere eseguito con l'ambito del server. ALL SERVER si applica anche ai trigger LOGON.

Nota Nota

Questa opzione non è disponibile in un database indipendente.

Per impostazione predefinita, i trigger vengono abilitati in fase di creazione. La disabilitazione di un trigger non ne comporta l'eliminazione. Il trigger continua a esistere come oggetto nel database corrente, ma non viene attivato quando viene eseguita una qualsiasi istruzione Transact-SQL in cui è stato programmato. I trigger possono essere riabilitati tramite ENABLE TRIGGER. I trigger DML definiti su tabelle possono inoltre essere disabilitati o abilitati tramite ALTER TABLE.

La modifica del trigger tramite l'istruzione ALTER TRIGGER comporta l'abilitazione del trigger.

Per disabilitare un trigger DML, è necessario disporre almeno dell'autorizzazione ALTER per la tabella o la vista per cui il trigger è stato creato.

Per disabilitare un trigger DDL con ambito server (ON ALL SERVER) o un trigger LOGON, è necessario disporre dell'autorizzazione CONTROL SERVER per il server. Per disabilitare un trigger DDL con ambito database (ON DATABASE), è necessario disporre almeno dell'autorizzazione ALTER ANY DATABASE DDL TRIGGER nel database corrente.

A.Disabilitazione di un trigger DML in una tabella

Nell'esempio seguente viene disabilitato il trigger uAddress creato per la tabella Address.

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

B.Disabilitazione di un trigger DDL

Nell'esempio seguente viene creato e quindi disabilitato un trigger DDL safety con ambito database.

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.Disabilitazione di tutti i trigger definiti con lo stesso ambito

Nell'esempio seguente vengono disabilitati tutti i trigger DDL creati nell'ambito del server.

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

Aggiunte alla community

AGGIUNGI
Mostra:
© 2014 Microsoft