sp_reinitsubscription(Transact-SQL)
구독을 다시 초기화하도록 표시합니다. 이 저장 프로시저는 밀어넣기 구독을 위해 게시자에서 실행됩니다.
구문
sp_reinitsubscription [ [ @publication = ] 'publication' ]
[ , [ @article = ] 'article' ]
, [ @subscriber = ] 'subscriber'
[ , [ @destination_db = ] 'destination_db']
[ , [ @for_schema_change = ] 'for_schema_change']
[ , [ @publisher = ] 'publisher' ]
[ , [ @ignore_distributor_failure = ] ignore_distributor_failure ]
[ , [ @invalidate_snapshot = ] invalidate_snapshot ]
인수
- [ @publication = ] 'publication'
게시의 이름입니다. publication은 sysname이며 기본값은 all입니다.
- [ @article = ] 'article'
아티클의 이름입니다. article은 sysname이며 기본값은 all입니다. 즉시 업데이트 게시의 경우 article은 반드시 all이어야 합니다. All이 아니면 저장 프로시저가 게시를 건너뛰고 오류를 보고합니다.
- [ @subscriber=] 'subscriber'
구독자의 이름입니다. subscriber는 sysname이며 기본값은 없습니다.
- [ @destination_db=] 'destination_db'
대상 데이터베이스의 이름입니다. destination_db는 sysname이며 기본값은 all입니다.
- [ @for_schema_change=] 'for_schema_change'
게시 데이터베이스에서 스키마가 변경되어 그 결과로 다시 초기화가 발생하는지 여부를 표시합니다. for_schema_change는 bit이며 기본값은 0입니다. 0인 경우 게시의 아티클 일부가 아닌 전체 게시가 다시 초기화되는 동안 즉시 업데이트를 허용하는 게시에 대한 활성 구독이 다시 활성화됩니다. 이는 스키마가 변경되어 다시 초기화가 시작됨을 의미합니다. 1인 경우 스냅숏 에이전트가 실행될 때까지 활성 구독이 다시 활성화되지 않습니다.
[@publisher= ] 'publisher'
비-SQL Server(Non-SQL Server) 게시자를 지정합니다. publisher는 sysname이며 기본값은 NULL입니다.[!참고] SQL Server 게시자에 대해서는 publisher를 사용하면 안 됩니다.
- [ @ignore_distributor_failure= ] ignore_distributor_failure
배포자가 없거나 오프라인 상태인 경우에도 다시 초기화할 수 있도록 합니다. ignore_distributor_failure는 bit이며 기본값은 0입니다. 0인 경우 배포자가 없거나 오프라인 상태이면 다시 초기화가 실패합니다.
- [ @invalidate_snapshot= ] invalidate_snapshot
기존 게시 스냅숏을 무효화합니다. invalidate_snapshot은 bit이며 기본값은 0입니다. 1인 경우 게시할 새 스냅숏이 생성됩니다.
반환 코드 값
0(성공) 또는 1(실패)
주의
sp_reinitsubscription은 트랜잭션 복제에 사용됩니다.
sp_reinitsubscription은 피어 투 피어 트랜잭션 복제용으로 지원되지 않습니다.
초기 스냅숏이 자동으로 적용되고 게시가 업데이트할 수 있는 구독을 허용하지 않는 구독의 경우 이 저장 프로시저가 실행된 다음 스냅숏 에이전트가 실행되어야 스키마 및 대량 복사 프로그램 파일이 준비되어 배포 에이전트가 구독을 다시 동기화할 수 있게 됩니다.
초기 스냅숏이 자동으로 적용되고 게시가 업데이트할 수 있는 구독을 허용하는 구독의 경우 배포 에이전트는 가장 최신 스키마 및 스냅숏 에이전트가 이전에 만든 대량 복사 프로그램 파일을 사용하여 구독을 다시 동기화합니다. 배포 에이전트가 사용 중이 아닌 경우에는 사용자가 sp_reinitsubscription을 실행한 직후 배포 에이전트가 구독을 다시 동기화합니다. 그렇지 않은 경우에는 배포 에이전트 명령 프롬프트 매개 변수인 MessageInterval에서 지정한 메시지 간격이 지나면 동기화가 발생합니다.
sp_reinitsubscription은 초기 스냅숏이 수동으로 적용되는 구독에 영향을 주지 않습니다.
게시에 대한 익명 구독을 다시 동기화하려면 subscriber로 all 또는 NULL을 전달합니다.
트랜잭션 복제는 아티클 수준에서 구독의 다시 초기화를 지원합니다. 아티클이 다시 초기화되도록 표시된 후 다음 동기화 동안 아티클의 스냅숏은 구독자에서 다시 적용됩니다. 그러나 동일한 구독자가 구독하는 종속 아티클이 있는 경우 게시에 있는 종속 아티클도 자동으로 다음과 같은 특정 상황에서 다시 초기화되지 않으면 아티클의 스냅숏을 다시 적용할 수 없습니다.
- 아티클에 대해 미리 작성한 명령이 'drop'인 경우 아티클의 기준 개체에 관한 스키마 바운드 저장 프로시저 및 스키마 바운드 뷰의 해당 아티클도 다시 초기화되도록 표시됩니다.
- 아티클의 스키마 옵션에 기본 키에 선언된 참조 무결성의 스크립팅을 포함하는 경우 다시 초기화된 아티클의 기본 테이블에 대해 외래 키 관계를 가진 기본 테이블이 있는 아티클도 다시 초기화되도록 표시됩니다.
사용 권한
sysadmin 고정 서버 역할의 멤버, db_owner 고정 데이터베이스 역할의 멤버 또는 구독의 작성자만 sp_reinitsubscription을 실행할 수 있습니다.
예
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @subscriptionDB AS sysname;
DECLARE @publication AS sysname;
SET @subscriptionDB = N'AdventureWorksReplica';
SET @publication = N'AdvWorksProductTran';
USE [AdventureWorksReplica]
-- Execute at the Publisher to reinitialize the push subscription.
EXEC sp_reinitsubscription
@subscriber = $(SubServer),
@destination_db = @subscriptionDB,
@publication = @publication;
GO
-- Start the Distribution Agent.
참고 항목
참조
관련 자료
How to: Reinitialize a Subscription (Replication Transact-SQL Programming)
구독 다시 초기화