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.
См. также
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по