Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Markerar den aktuella öppna transaktionen som en valideringstransaktion på prenumerationsnivå för den angivna prenumeranten. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.
Transact-SQL syntaxkonventioner
Syntax
sys.sp_marksubscriptionvalidation
[ @publication = ] N'publication'
, [ @subscriber = ] N'subscriber'
, [ @destination_db = ] N'destination_db'
[ , [ @publisher = ] N'publisher' ]
[ ; ]
Arguments
[ @publication = ] N'publicering'
Namnet på publikationen. @publication är sysname, utan standard.
[ @subscriber = ] N'prenumerant'
Namnet på prenumeranten. @subscriber är sysname, utan standard.
[ @destination_db = ] N'destination_db'
Namnet på destinationsdatabasen. @destination_db är sysname, utan standard.
[ @publisher = ] N'publisher'
Specificerar en icke-SQL Server Publisher.
@publisher är sysname, med standardvärdet .NULL
@publisher bör inte användas för en publikation som tillhör en SQL Server Publisher.
Returnera kodvärden
0 (lyckades) eller 1 (fel).
Anmärkningar
sp_marksubscriptionvalidation används vid transaktionell replikation.
sp_marksubscriptionvalidationstöder inte prenumeranter som inte är SQL Server.
För icke-SQL Server Publishers kan du inte köra sp_marksubscriptionvalidation från en explicit transaktion. Detta beror på att explicita transaktioner inte stöds över den länkade serveranslutningen som används för att komma åt Publisher.
sp_marksubscriptionvalidation måste användas tillsammans med sp_article_validation, ange ett värde på 1för @subscription_level, och kan användas med andra samtal för sp_marksubscriptionvalidation att markera den aktuella öppna transaktionen för andra abonnenter.
Permissions
Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_marksubscriptionvalidation.
Examples
Följande fråga kan tillämpas på publiceringsdatabasen för att posta valideringskommandon på prenumerationsnivå. Dessa kommandon plockas upp av distributionsagenterna för angivna abonnenter. Den första transaktionen validerar artikel art1, medan den andra validerar art2. Samtalen till sp_marksubscriptionvalidation och sp_article_validation kapslas in i en transaktion. Vi rekommenderar endast ett samtal till sp_article_validation per transaktion. Detta beror på att sp_article_validation håller ett delat tabelllås på källtabellen under transaktionen. Du bör hålla transaktionen kort för att maximera samtidigheten.
BEGIN TRANSACTION;
EXECUTE sp_marksubscriptionvalidation
@publication = 'pub1',
@subscriber = 'Sub',
@destination_db = 'SubDB';
EXECUTE sp_marksubscriptionvalidation
@publication = 'pub1',
@subscriber = 'Sub2',
@destination_db = 'SubDB';
EXECUTE sp_article_validation
@publication = 'pub1',
@article = 'art1',
@rowcount_only = 0,
@full_or_fast = 0,
@shutdown_agent = 0,
@subscription_level = 1;
COMMIT TRANSACTION;
BEGIN TRANSACTION;
EXECUTE sp_marksubscriptionvalidation
@publication = 'pub1',
@subscriber = 'Sub',
@destination_db = 'SubDB';
EXECUTE sp_marksubscriptionvalidation
@publication = 'pub1',
@subscriber = 'Sub2',
@destination_db = 'SubDB';
EXECUTE sp_article_validation
@publication = 'pub1',
@article = 'art2',
@rowcount_only = 0,
@full_or_fast = 0,
@shutdown_agent = 0,
@subscription_level = 1;
COMMIT TRANSACTION;