sp_marksubscriptionvalidation (Transact-SQL)
Применимо к:SQL Server
Помечает текущую открытую транзакцию как транзакцию проверки уровня подписки для заданного подписчика. Эта хранимая процедура выполняется на издателе в базе данных публикации.
Соглашения о синтаксисе Transact-SQL
Синтаксис
sp_marksubscriptionvalidation [ @publication = ] 'publication'
, [ @subscriber = ] 'subscriber'
, [ @destination_db = ] 'destination_db'
[ , [ @publisher = ] 'publisher' ]
Аргументы
[ @publication = ] 'publication'
Имя публикации. публикация — sysname, без значения по умолчанию.
[ @subscriber = ] 'subscriber'
Имя подписчика. подписчик — sysname, без значения по умолчанию.
[ @destination_db = ] 'destination_db'
Имя целевой базы данных. destination_db — sysname без значения по умолчанию.
[ @publisher = ] 'publisher'
Указывает издателя Microsoft SQL Server, отличного от Microsoft SQL Server. publisher имеет имя sysname с значением NULL по умолчанию.
Заметка
издатель не должен использоваться для публикации, которая принадлежит издателю SQL Server.
Значения кода возврата
0 (успешно) или 1 (сбой)
Замечания
sp_marksubscriptionvalidation используется в репликации транзакций.
sp_marksubscriptionvalidation не поддерживает подписчиков, не являющихся подписчиками SQL Server.
Для издателей, отличных от SQL Server, невозможно выполнить sp_marksubscriptionvalidation из явной транзакции. Это обусловлено тем, что явные транзакции не поддерживаются через соединение связанного сервера, через которое осуществляется подключение к издателю.
sp_marksubscriptionvalidation необходимо использовать вместе с sp_article_validation (Transact-SQL), указав значение 1 для subscription_level, и можно использовать с другими вызовами для sp_marksubscriptionvalidation, чтобы пометить текущую открытую транзакцию для других подписчиков.
Разрешения
Только члены предопределенных ролей сервера sysadmin или db_owner предопределенных ролей базы данных могут выполняться sp_marksubscriptionvalidation.
пример
Приведенный ниже запрос можно применять к публикующей базе данных для выполнения команд проверки уровня подписки. Эти команды выбираются агентами распространителя указанных подписчиков. Обратите внимание, что первая транзакция проверяет статью art1, а вторая транзакция проверяет art2. Кроме того, обратите внимание, что вызовы sp_marksubscriptionvalidation и sp_article_validation (Transact-SQL) были инкапсулированы в транзакцию. Мы рекомендуем только один вызов sp_article_validation (Transact-SQL) для каждой транзакции. Это связано с тем, что sp_article_validation (Transact-SQL) содержит блокировку общей таблицы в исходной таблице в течение длительности транзакции. Для повышения параллелизма следует добиваться как можно меньшей продолжительности транзакций.
begin tran
exec sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub', @destination_db = 'SubDB'
exec sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub2', @destination_db = 'SubDB'
exec sp_article_validation @publication = 'pub1', @article = 'art1',
@rowcount_only = 0, @full_or_fast = 0, @shutdown_agent = 0,
@subscription_level = 1
commit tran
begin tran
exec sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub', @destination_db = 'SubDB'
exec sp_marksubscriptionvalidation @publication = 'pub1',
@subscriber = 'Sub2', @destination_db = 'SubDB'
exec sp_article_validation @publication = 'pub1', @article = 'art2',
@rowcount_only = 0, @full_or_fast = 0, @shutdown_agent = 0,
@subscription_level = 1
commit tran
См. также
Системные хранимые процедуры (Transact-SQL)
Проверка реплицированных данных
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по