sp_marksubscriptionvalidation(Transact-SQL)
적용 대상: SQL Server
현재 열려 있는 트랜잭션을 지정된 구독자에 대한 구독 수준 유효성 검사 트랜잭션으로 표시합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_marksubscriptionvalidation
[ @publication = ] N'publication'
, [ @subscriber = ] N'subscriber'
, [ @destination_db = ] N'destination_db'
[ , [ @publisher = ] N'publisher' ]
[ ; ]
인수
[ @publication = ] N'publication'
게시의 이름 @publication 기본값이 없는 sysname입니다.
[ @subscriber = ] N'subscriber'
구독자의 이름입니다. @subscriber 기본값이 없는 sysname입니다.
[ @destination_db = ] N'destination_db'
대상 데이터베이스의 이름입니다. @destination_db 기본값이 없는 sysname입니다.
[ @publisher = ] N'publisher'
SQL Server 이외 게시자를 지정합니다. @publisher sysname이며 기본값은 .입니다NULL
.
@publisher SQL Server 게시자에 속하는 게시에 사용하면 안 됩니다.
반환 코드 값
0
(성공) 또는 1
(실패).
설명
sp_marksubscriptionvalidation
는 트랜잭션 복제에 사용됩니다.
sp_marksubscriptionvalidation
는 SQL Server 이외 구독자를 지원하지 않습니다.
SQL Server가 아닌 게시자의 경우 명시적 트랜잭션 내에서 실행할 sp_marksubscriptionvalidation
수 없습니다. 이는 게시자에 액세스하는 데 사용되는 연결된 서버 연결을 통해 명시적 트랜잭션이 지원되지 않기 때문입니다.
sp_marksubscriptionvalidation
는 @subscription_level 값을 1
지정하는 sp_article_validation 함께 사용해야 하며, 다른 호출과 함께 사용하여 다른 구독자에 대한 현재 열려 있는 트랜잭션을 표시할 sp_marksubscriptionvalidation
수 있습니다.
사용 권한
sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 실행할 sp_marksubscriptionvalidation
수 있습니다.
예제
게시 데이터베이스에 다음 쿼리를 적용하여 구독 수준 유효성 검사 명령을 게시할 수 있습니다. 이러한 명령은 지정된 구독자의 배포 에이전트 의해 선택됩니다. 첫 번째 트랜잭션은 아티클 art1
의 유효성을 검사하고 두 번째 트랜잭션은 유효성을 검사합니다 art2
. 호출 sp_marksubscriptionvalidation
및 sp_article_validation 트랜잭션에 캡슐화됩니다. 트랜잭션당 sp_article_validation 호출만 하는 것이 좋습니다. sp_article_validation 트랜잭션 중에 원본 테이블에 공유 테이블 잠금을 보유하기 때문입니다. 동시성을 최대화하려면 트랜잭션을 짧게 유지해야 합니다.
BEGIN TRANSACTION;
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 TRANSACTION;
BEGIN TRANSACTION;
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 TRANSACTION;