ZAKÁZAT TRIGGER (Transact-SQL)

  • 05/10/2017
  • 2 minuty čtení
    • W
    • c
    • r
    • i
    • M
    • +7

Týká se: SQL Server (všechny podporované verze) Azure SQL Database

Zakáže spouštěč.

Syntaktické konvence Transact-SQL

Syntaxe

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

Poznámka

Pro zobrazení syntaxe Transact-SQL pro SQL Server 2014 a starší verze viz dokumentace předchozích verzí.

Argumenty

jméno_schématu
Je název schématu, ke kterému spouštěč patří. Název_schématu nelze zadat pro DDL nebo přihlašovací spouštěče.

název_spouštěče
Je název spouštěče, který má být zakázán.

ALL
Určuje, že všechny spouštěče definované v rozsahu klauzule ON jsou zakázány.

Upozornění

SQL Server vytváří spouštěče v databázích, které jsou publikovány pro slučovací replikaci. Zadání ALL v publikovaných databázích tyto triggery zakáže, což naruší replikaci. Před zadáním ALL zkontrolujte, zda aktuální databáze není publikována pro slučovací replikaci.

jméno_objektu
Je název tabulky nebo pohledu, pro jehož provedení byl vytvořen název_spouštěče DML.

DATABASE
U spouštěče DDL označuje, že název_spouštěče byl vytvořen nebo upraven pro provedení s rozsahem databáze.

ALL SERVER
Použije se pro: SQL Server 2008 a novější.

Pro spouštěč DDL označuje, že trigger_name byl vytvořen nebo upraven pro spuštění s rozsahem serveru. ALL SERVER platí také pro spouštěče přihlášení.

Poznámka

Tato možnost není k dispozici v uzavřené databázi.

Poznámky

Spouštěče jsou ve výchozím nastavení povoleny při jejich vytvoření. Zakázáním spouštěče nedojde k jeho zrušení. Spouštěč stále existuje jako objekt v aktuální databázi. Spouštěč se však nespouští při provádění příkazů jazyka Transact-SQL, na kterých byl naprogramován. Spouštěče lze znovu povolit pomocí příkazu ENABLE TRIGGER. Spouštěče DML definované na tabulkách lze také zakázat nebo povolit pomocí příkazu ALTER TABLE.

Změna spouštěče pomocí příkazu ALTER TRIGGER spouštěč povolí.

Oprávnění

Chcete-li zakázat spouštěč DML, musí mít uživatel minimálně oprávnění ALTER k tabulce nebo pohledu, na kterém byl spouštěč vytvořen.

Chcete-li zakázat spouštěč DDL s rozsahem serveru (ON ALL SERVER) nebo spouštěč přihlášení, musí mít uživatel na serveru oprávnění CONTROL SERVER. Pro zakázání spouštěče DDL s rozsahem databáze (ON DATABASE) musí mít uživatel minimálně oprávnění ALTER ANY DATABASE DDL TRIGGER v aktuální databázi.

Příklady

Následující příklady jsou popsány v databázi AdventureWorks2012.

A. Zakázání spouštěče DML na tabulce

Následující příklad zakáže spouštěč uAddress, který byl vytvořen na tabulce Person.

DISABLE TRIGGER Person.uAddress ON Person.Address; GO 

B. Zakázání spouštěče DDL

Následující příklad vytvoří spouštěč DDL safety s rozsahem databáze a poté jej zakáže.

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. Zakázání všech spouštěčů, které byly definovány se stejným rozsahem

Následující příklad zakáže všechny spouštěče DDL, které byly vytvořeny v rozsahu serveru.

DISABLE Trigger ALL ON ALL SERVER; GO 

Viz také

ZAKÁZAT TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.