DISABLE TRIGGER (Transact-SQL)SQL)

  • 05/10/2017
  • 2 minute de citit
    • W
    • c
    • .

    • r
    • i
    • M
    • +7

Se aplică la: SQL Server (toate versiunile acceptate) Azure SQL Database

Dezactivează un declanșator.

Convenții de sintaxă Transact-SQL

Sintaxa

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

Nota

Pentru a vizualiza sintaxa Transact-SQL pentru SQL Server 2014 și versiunile anterioare, consultați documentația versiunilor anterioare.

Argumente

schema_name
Este numele schemei din care face parte declanșatorul. schema_name nu poate fi specificat pentru declanșatoarele DDL sau de logare.

trigger_name
Este numele declanșatorului care urmează să fie dezactivat.

ALL
Indică faptul că toate declanșatoarele definite la nivelul domeniului de aplicare al clauzei ON sunt dezactivate.

Atenție

SQL Server creează declanșatoare în bazele de date care sunt publicate pentru replicarea fuzionată. Specificarea ALL în bazele de date publicate dezactivează aceste declanșatoare, ceea ce întrerupe replicarea. Verificați dacă baza de date curentă nu este publicată pentru replicare prin fuziune înainte de a specifica ALL.

object_name
Este numele tabelului sau al vizualizării pe care a fost creat declanșatorul DML trigger_name pentru a se executa.

DATABASE
Pentru un declanșator DDL, indică faptul că trigger_name a fost creat sau modificat pentru a se executa cu domeniul de aplicare al bazei de date.

ALL SERVER
Se aplică la: SQL Server 2008 și ulterior.

Pentru un declanșator DDL, indică faptul că trigger_name a fost creat sau modificat pentru a se executa cu domeniul de aplicare al serverului. ALL SERVER se aplică, de asemenea, declanșatoarelor de logare.

Nota

Această opțiune nu este disponibilă într-o bază de date conținută.

Observații

Declanșatoarele sunt activate în mod implicit atunci când sunt create. Dezactivarea unui declanșator nu îl anulează. Declanșatorul există în continuare ca obiect în baza de date curentă. Cu toate acestea, declanșatorul nu se declanșează atunci când sunt executate instrucțiunile Transact-SQL pe care a fost programat. Declanșatoarele pot fi reactivate folosind ENABLE TRIGGER. Declanșatoarele DML definite pe tabele pot fi, de asemenea, dezactivate sau activate prin utilizarea ALTER TABLE.

Modificarea declanșatorului prin utilizarea instrucțiunii ALTER TRIGGER activează declanșatorul.

Permisiuni

Pentru a dezactiva un declanșator DML, cel puțin, un utilizator trebuie să aibă permisiunea ALTER pe tabela sau vizualizarea pe care a fost creat declanșatorul.

Pentru a dezactiva un declanșator DDL cu domeniu de aplicare server (ON ALL SERVER) sau un declanșator de conectare, un utilizator trebuie să aibă permisiunea CONTROL SERVER pe server. Pentru a dezactiva un declanșator DDL cu domeniul de aplicare al bazei de date (ON DATABASE), cel puțin, un utilizator trebuie să aibă permisiunea ALTER ANY DATABASE DDL TRIGGER în baza de date curentă.

Exemple

Cele care urmează sunt descrise în baza de date AdventureWorks2012.

A. Dezactivarea unui declanșator DML pe o tabelă

Exemplul următor dezactivează declanșatorul uAddress care a fost creat pe tabela Person.

DISABLE TRIGGER Person.uAddress ON Person.Address; GO 

B. Dezactivarea unui declanșator DDL

Exemplul următor creează un declanșator DDL safety cu domeniul de aplicare al bazei de date, apoi îl dezactivează.

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. Dezactivarea tuturor declanșatoarelor care au fost definite cu același domeniu de aplicare

Exemplul următor dezactivează toate declanșatoarele DDL care au fost create la nivelul serverului.

DISABLE Trigger ALL ON ALL SERVER; GO 

Vezi și

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

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.