Avaktivera TRIGGER (Transact-SQL)SQL)

  • 05/10/2017
  • 2 minuter att läsa
    • W
    • c
    • r
    • i
    • M
    • +7

Gäller: SQL Server (alla versioner som stöds) Azure SQL Database

Inaktiverar en utlösare.

Transact-SQL syntaxkonventioner

Syntax

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

Anmärkning

Om du vill visa Transact-SQL-syntaxen för SQL Server 2014 och tidigare, se dokumentationen för tidigare versioner.

Argument

schema_name
Är namnet på det schema som utlösaren tillhör. schema_name kan inte anges för DDL- eller inloggningsutlösare.

trigger_name
är namnet på den utlösare som ska inaktiveras.

ALL
Indikerar att alla utlösare som definierats inom ON-klausulens räckvidd inaktiveras.

Försiktighet

SQL Server skapar utlösare i databaser som publiceras för sammanslagningsreplikering. Om du anger ALL i publicerade databaser inaktiveras dessa utlösare, vilket stör replikeringen. Kontrollera att den aktuella databasen inte är publicerad för sammanslagningsreplikering innan du anger ALL.

object_name
Är namnet på den tabell eller vy som DML-utlösaren trigger_name skapades för att exekveras.

DATABASE
För en DDL-utlösare anger att trigger_name skapades eller ändrades för att exekveras med databasomfång.

ALL SERVER
Gäller för: För en DDL-utlösare anger att trigger_name skapades eller ändrades för att exekveras med serverområdet. ALL SERVER gäller även för inloggningsutlösare.

Anmärkning

Detta alternativ är inte tillgängligt i en innesluten databas.

Märkningar

Upplösare aktiveras som standard när de skapas. Om du inaktiverar en utlösare släpper du den inte. Utlösaren finns fortfarande kvar som ett objekt i den aktuella databasen. Utlösaren utlöses dock inte när Transact-SQL-utsagor som den var programmerad för exekveras. Utlösare kan återaktiveras med hjälp av ENABLE TRIGGER. DML-utlösare som definieras på tabeller kan också inaktiveras eller aktiveras med hjälp av ALTER TABLE.

Ändring av utlösaren med hjälp av ALTER TRIGGER-anvisningen aktiverar utlösaren.

Handlingar

För att inaktivera en DML-utlösare måste en användare åtminstone ha ALTER-behörighet för den tabell eller vy som utlösaren skapades för.

För att inaktivera en DDL-utlösare med serveromfång (ON ALL SERVER) eller en inloggningsutlösare måste en användare ha CONTROL SERVER-behörighet för servern. För att inaktivera en DDL-utlösare med databasomfattning (ON DATABASE) måste en användare åtminstone ha behörigheten ALTER ANY DATABASE DDL TRIGGER i den aktuella databasen.

Exempel

Följande exempel beskrivs i databasen AdventureWorks2012.

A. Inaktivera en DML-trigger på en tabell

Följande exempel inaktiverar trigger uAddress som skapades på tabell Person.

DISABLE TRIGGER Person.uAddress ON Person.Address; GO 

B. Inaktivera en DDL-trigger

Följande exempel skapar en DDL-trigger safety med databasomfång och inaktiverar den sedan.

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. Inaktivera alla utlösare som definierades med samma omfattning

Följande exempel inaktiverar alla DDL-utlösare som skapades med serveromfång.

DISABLE Trigger ALL ON ALL SERVER; GO 

Se även

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

Lämna ett svar

Din e-postadress kommer inte publiceras.