다음을 통해 공유


sp_reinitsubscription(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

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

Transact-SQL 구문 표기 규칙

구문

sp_reinitsubscription
    [ [ @publication = ] N'publication' ]
    [ , [ @article = ] N'article' ]
    , [ @subscriber = ] N'subscriber'
    [ , [ @destination_db = ] N'destination_db' ]
    [ , [ @for_schema_change = ] for_schema_change ]
    [ , [ @publisher = ] N'publisher' ]
    [ , [ @ignore_distributor_failure = ] ignore_distributor_failure ]
    [ , [ @invalidate_snapshot = ] invalidate_snapshot ]
[ ; ]

인수

[ @publication = ] N'publication'

게시의 이름 @publication sysname이며 기본값은 .입니다all.

[ @article = ] N'article'

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

[ @subscriber = ] N'subscriber'

구독자의 이름입니다. @subscriber 기본값이 없는 sysname입니다.

[ @destination_db = ] N'destination_db'

대상 데이터베이스의 이름입니다. @destination_db sysname이며 기본값은 .입니다all.

[ @for_schema_change = ] for_schema_change

게시 데이터베이스에서 스키마 변경의 결과로 다시 초기화가 발생하는지 여부를 나타냅니다. @for_schema_change 비트이며 기본값은 .입니다0.

  • 0, 즉시 업데이트를 허용하는 게시에 대한 활성 구독이 일부 아티클뿐만 아니라 전체 게시가 다시 활성화되는 한 다시 활성화됩니다. 즉, 스키마 변경의 결과로 다시 초기화가 시작됩니다.

  • 이 경우 1스냅샷 에이전트 실행될 때까지 활성 구독이 다시 활성화되지 않습니다.

[ @publisher = ] N'publisher'

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

@publisher SQL Server 게시자에 사용하면 안 됩니다.

[ @ignore_distributor_failure = ] ignore_distributor_failure

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

[ @invalidate_snapshot = ] invalidate_snapshot

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

반환 코드 값

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

설명

sp_reinitsubscription 는 트랜잭션 복제에 사용됩니다.

sp_reinitsubscription 는 피어 투 피어 트랜잭션 복제에 대해 지원되지 않습니다.

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

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

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

익명 구독을 게시에 다시 동기화하려면 @subscriber 전달 all 하거나 NULL 전달합니다.

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

  • 아티클의 미리 생성 명령이 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수 있습니다.