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

ОБЛАСТЬ ПРИМЕНЕНИЯ: даSQL Server даБаза данных SQL Azure нетAzure Synapse Analytics (хранилище данных SQL) нетParallel Data WarehouseAPPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Отключает триггер.Disables a trigger.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQLTopic link icon Transact-SQL Syntax Conventions

СинтаксисSyntax

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

АргументыArguments

schema_nameschema_name
Имя схемы, к которой принадлежит триггер.Is the name of the schema to which the trigger belongs. Аргумент schema_name не может указываться для триггеров DDL или триггеров входа.schema_name cannot be specified for DDL or logon triggers.

trigger_nametrigger_name
Имя триггера, который нужно отключить.Is the name of the trigger to be disabled.

ALLALL
Означает, что все триггеры в области действия предложения ON будут отключены.Indicates that all triggers defined at the scope of the ON clause are disabled.

Внимание!

SQL ServerSQL Server создает триггеры в базах данных, опубликованных для репликации слиянием.creates triggers in databases that are published for merge replication. Если в опубликованных базах данных указано значение ALL, то эти триггеры отключаются, что прерывает репликацию.Specifying ALL in published databases disables these triggers, which disrupts replication. Перед тем как задавать значение ALL, убедитесь, что текущая база данных не опубликована для репликации слиянием.Verify that the current database is not published for merge replication before specifying ALL.

object_nameobject_name
Имя таблицы или представления, для выполнения которых создан триггер DML с именем trigger_name.Is the name of the table or view on which the DML trigger trigger_name was created to execute.

DATABASEDATABASE
Показывает, что триггер DDL trigger_name был создан или изменен для выполнения в области базы данных.For a DDL trigger, indicates that trigger_name was created or modified to execute with database scope.

ALL SERVERALL SERVER
Область применения: SQL Server 2008SQL Server 2008 и более поздних версий.Applies to: SQL Server 2008SQL Server 2008 and later.

Показывает, что триггер DDL trigger_name был создан или изменен для выполнения в области сервера.For a DDL trigger, indicates that trigger_name was created or modified to execute with server scope. Параметр ALL SERVER также применяется к триггерам входа.ALL SERVER also applies to logon triggers.

Примечание

Этот параметр недоступен в автономной базе данных.This option is not available in a contained database.

RemarksRemarks

Триггеры включаются по умолчанию при создании.Triggers are enabled by default when they are created. Отключение триггера не сбрасывает его.Disabling a trigger does not drop it. Триггер все еще существует как объект в текущей базе данных.The trigger still exists as an object in the current database. Однако триггер не запускается, когда инструкции Transact-SQLTransact-SQL, для которых он запрограммирован, выполняются.However, the trigger does not fire when any Transact-SQLTransact-SQL statements on which it was programmed are executed. Повторно включить триггеры можно с помощью инструкции ENABLE TRIGGER.Triggers can be re-enabled by using ENABLE TRIGGER. Кроме того, триггеры DML, определенные в таблицах, можно отключать или включать с помощью ALTER TABLE.DML triggers defined on tables can be also be disabled or enabled by using ALTER TABLE.

Изменение триггера с помощью инструкции ALTER TRIGGER приводит к включению триггера.Changing the trigger by using the ALTER TRIGGER statement enables the trigger.

РазрешенияPermissions

Для отключения триггера DML пользователь должен обладать как минимум разрешением ALTER для таблицы или представления, где создан триггер.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.

Для отключения триггера DDL в области сервера (ON ALL SERVER) или триггера входа пользователь должен обладать разрешением CONTROL 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. Для отключения триггера DDL в области базы данных (ON DATABASE) пользователь должен обладать как минимум разрешением ALTER ANY DATABASE DDL TRIGGER в текущей базе данных.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.

ПримерыExamples

Приведенные ниже примеры описаны в базе данных AdventureWorks2012.The following examples are described in the AdventureWorks2012 database.

A.A. Отключение триггера DML в таблицеDisabling a DML trigger on a table

В следующем примере показано отключение триггера uAddress, созданного для таблицы Address.The following example disables trigger uAddress that was created on table Address.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

Б.B. Отключение триггера DDLDisabling a DDL trigger

В следующем примере создается триггер DDL safety в области базы данных, а затем он отключается.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. Отключение всех триггеров, определенных в одной областиDisabling all triggers that were defined with the same scope

В следующем примере отключаются все триггеры DLL, созданные в области сервера.The following example disables all DDL triggers that were created at the server scope.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

См. также:See 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)