sp_reinitsubscription(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

다시 초기화할 구독을 표시합니다. 이 저장 프로시저는 밀어넣기 구독을 위해 게시자에서 실행됩니다.

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이며 기본값은 모두입니다.

[ @article = ] 'article' 아티클의 이름입니다. 아티클은 sysname이며 기본값은 모두입니다. 즉시 업데이트 게시의 경우 아티클이 모두어야 합니다. 그렇지 않으면 저장 프로시저가 게시를 건너뛰고 오류를 보고합니다.

[ @subscriber = ] 'subscriber' 구독자의 이름입니다. 구독자는 sysname이며 기본값은 없습니다.

[ @destination_db = ] 'destination_db' 대상 데이터베이스의 이름입니다. destination_db 모두의 기본값인 sysname입니다.

[ @for_schema_change = ] 'for_schema_change' 게시 데이터베이스에서 스키마 변경의 결과로 다시 초기화가 발생하는지 여부를 나타냅니다. for_schema_change 비트이며 기본값은 0입니다. 0이면 일부 아티클뿐만 아니라 전체 게시가 다시 초기화되는 한 즉시 업데이트를 허용하는 게시에 대한 활성 구독이 다시 활성화됩니다. 즉, 스키마 변경의 결과로 다시 초기화가 시작됩니다. 1이면 스냅샷 에이전트 실행될 때까지 활성 구독이 다시 활성화되지 않습니다.

[ @publisher = ] 'publisher' SQL Server가 아닌 게시자를 지정합니다. 게시자는 sysname이며 기본값은 NULL입니다.

참고 항목

게시자는 SQL Server 게시자에 사용할 수 없습니다.

[ @ignore_distributor_failure = ] ignore_distributor_failure 배포자가 없거나 오프라인인 경우에도 다시 초기화할 수 있습니다. ignore_distributor_failure 비트이며 기본값은 0입니다. 0이면 배포자의 존재 여부 또는 오프라인 상태인 경우 다시 초기화가 실패합니다.

[ @invalidate_snapshot = ] invalidate_snapshot기존 게시 스냅샷 무효화합니다. invalidate_스냅샷 비트이며 기본값은 0입니다. 1이면 게시에 대한 새 스냅샷 생성됩니다.

반환 코드 값

0 (성공) 또는 1 (실패)

설명

sp_reinitsubscription 트랜잭션 복제본(replica) 사용됩니다.

피어 투 피어 트랜잭션 복제본(replica) sp_reinitsubscription 지원되지 않습니다.

초기 스냅샷이 자동으로 적용되고 게시가 업데이트할 수 있는 구독을 허용하지 않는 구독의 경우 이 저장 프로시저가 실행된 다음 스냅샷 에이전트가 실행되어야 스키마 및 대량 복사 프로그램 파일이 준비되어 배포 에이전트가 구독을 다시 동기화할 수 있게 됩니다.

초기 스냅샷 자동으로 적용되고 게시에서 업데이트 가능한 구독을 허용하는 구독의 경우 배포 에이전트 스냅샷 에이전트 이전에 만든 최신 스키마 및 대량 복사 프로그램 파일을 사용하여 구독을 다시 동기화합니다. 배포 에이전트 사용자가 sp_reinitsubscription 실행한 직후에 구독을 다시 동기화합니다. 배포 에이전트 사용 중이 아니면 메시지 간격(배포 에이전트 명령 프롬프트 매개 변수: MessageInterval에 의해 지정됨) 후에 동기화가 발생할 수 있습니다.

sp_reinitsubscription 초기 스냅샷 수동으로 적용되는 구독에는 영향을 주지 않습니다.

익명 구독을 게시에 다시 동기화하려면 전체 또는 NULL을 구독자로 전달합니다.

트랜잭션 복제본(replica) 아티클 수준에서 구독 다시 초기화를 지원합니다. 아티클의 스냅샷 아티클이 다시 초기화로 표시된 후 다음 동기화 중에 구독자에서 다시 적용됩니다. 그러나 동일한 구독자가 구독하는 종속 아티클이 있는 경우 게시에 있는 종속 아티클도 자동으로 다음과 같은 특정 상황에서 다시 초기화되지 않으면 아티클의 스냅샷을 다시 적용할 수 없습니다.

  • 아티클의 미리 만든 명령이 'drop'인 경우 해당 아티클의 기본 개체에 대한 스키마 바인딩 뷰 및 스키마 바인딩 저장 프로시저에 대한 아티클도 다시 초기화로 표시됩니다.

  • 아티클의 스키마 옵션에 기본 키에 대해 선언된 참조 무결성 스크립팅이 포함된 경우 다시 초기화된 아티클의 기본 테이블과 외래 키 관계가 있는 기본 테이블이 있는 아티클도 다시 초기화하도록 표시됩니다.

예시

-- 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'AdventureWorks2022Replica';
SET @publication = N'AdvWorksProductTran';

USE [AdventureWorks2022Replica]

-- Execute at the Publisher to reinitialize the push subscription.
EXEC sp_reinitsubscription 
    @subscriber = $(SubServer),
    @destination_db = @subscriptionDB,
    @publication = @publication;
GO

-- Start the Distribution Agent.

사용 권한

sysadmin 고정 서버 역할의 멤버, db_owner 고정 데이터베이스 역할의 멤버 또는 구독 작성자만 sp_reinitsubscription 실행할 수 있습니다.

참고 항목

구독 다시 초기화
구독 다시 초기화
복제 저장 프로시저(Transact-SQL)