Поделиться через


sp_check_for_sync_trigger (Transact-SQL)

Область применения: SQL Server Управляемый экземпляр SQL Azure

Определяет, вызывается ли определяемый пользователем триггер или хранимая процедура в контексте триггера репликации, который используется для немедленного обновления подписок. Эта хранимая процедура выполняется на издателе в базе данных публикации или на подписчике в базе данных подписки.

Соглашения о синтаксисе Transact-SQL

Синтаксис

sp_check_for_sync_trigger
    [ @tabid = ] tabid
    [ , [ @trigger_op = ] 'trigger_op' OUTPUT ]
    [ , [ @fonpublisher = ] fonpublisher ]
[ ; ]

Аргументы

[ = ] @tabid tabid

Идентификатор объекта таблицы, проверяемой для немедленного обновления триггеров. @tabid имеет значение int без значения по умолчанию.

[ @trigger_op = ] "trigger_op" OUTPUT

Указывает, является ли выходной параметр возвращать тип вызываемого триггера. @trigger_op является параметром OUTPUT типа char(10) и может быть одним из этих значений.

значение Описание
Ins INSERT триггер
Upd UPDATE триггер
Del DELETE триггер
NULL (по умолчанию)

[ @fonpublisher = ] fonpublisher

Указывает место выполнения хранимой процедуры. @fonpublisher бит с значением по умолчанию0.

  • Если 0выполнение находится на подписчике.
  • Если 1выполнение находится на издателе.

Значения кода возврата

0 указывает, что хранимая процедура не вызывается в контексте триггера немедленного обновления. 1 указывает, что вызывается в контексте немедленно обновляемого триггера и является типом возвращаемого триггера в @trigger_op.

Замечания

sp_check_for_sync_trigger используется в репликации моментальных снимков и репликации транзакций.

sp_check_for_sync_trigger используется для координации между репликацией и пользовательскими триггерами. Эта хранимая процедура определяет, вызывается ли она в контексте триггера репликации. Например, можно вызвать процедуру sp_check_for_sync_trigger в тексте определяемого пользователем триггера. Если sp_check_for_sync_trigger возвращается 0, определяемый пользователем триггер продолжает обработку. Если sp_check_for_sync_trigger возвращается 1, определяемый пользователем триггер завершает работу. Это гарантирует, что определяемый пользователем триггер не запускается при обновлении таблицы триггером репликации.

Примеры

А. Добавление кода в триггер в таблице подписчика

В следующем примере показан код, который может использоваться в триггере таблицы подписчика.

DECLARE @retcode INT,
    @trigger_op CHAR(10),
    @table_id INT;

SELECT @table_id = object_id('tablename');

EXEC @retcode = sp_check_for_sync_trigger
    @table_id,
    @trigger_op OUTPUT;

IF @retcode = 1
    RETURN;

B. Добавление кода в триггер таблицы Издателя

Код также можно добавить в триггер таблицы на издателе; Код аналогичен, но вызов sp_check_for_sync_trigger включает дополнительный параметр.

DECLARE @retcode INT,
    @trigger_op CHAR(10),
    @table_id INT,
    @fonpublisher INT;

SELECT @table_id = object_id('tablename');

SELECT @fonpublisher = 1;

EXEC @retcode = sp_check_for_sync_trigger
    @table_id,
    @trigger_op OUTPUT,
    @fonpublisher;

IF @retcode = 1
    RETURN;

Разрешения

Любой пользователь с SELECT разрешениями в системном представлении sys.objects может выполняться sp_check_for_sync_trigger.