sp_check_for_sync_trigger (Transact-SQL)

Применимо к:Управляемому экземпляру SQL Server Azure

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

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

Синтаксис

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

Аргументы

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

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

значение Description
Модули триггер 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  

Разрешения

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

См. также

Updatable Subscriptions for Transactional Replication