sp_reinitsubscription(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
다시 초기화할 구독을 표시합니다. 이 저장 프로시저는 밀어넣기 구독을 위해 게시자에서 실행됩니다.
구문
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
수 있습니다.