sys.sp_reinitsubscription (Transact-SQL)

Dotyczy:SQL ServerAzure SQL Managed Instance

Oznacza subskrypcję do ponownej inicjalizacji. Ta procedura jest wykonywana w Publisher dla subskrypcji push.

Transact-SQL konwencje składni

Syntax

sys.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 ]
[ ; ]

Arguments

[ @publication = ] N'publikacja'

Nazwa publikacji. @publication jest nazwą systemu z domyślnym .all

[ @article = ] N'artykuł'

Nazwa artykułu. @article to nazwa systemu z domyślnym .all Dla publikacji aktualizującej się natychmiast @article musi być .all W przeciwnym razie procedura przechowywana pomija publikację i zgłasza błąd.

[ @subscriber = ] N'subskrybent'

Nazwa subskrybenta. @subscriber to sysname, bez domyślnego ustawienia.

[ @destination_db = ] N'destination_db'

Nazwa bazy docelowej. @destination_db to nazwa systemu, z domyślnym .all

[ @for_schema_change = ] for_schema_change

Wskazuje, czy reinicjalizacja następuje w wyniku zmiany schematu w bazie danych publikacji. @for_schema_change jest bit, z domyślnym .0

  • Jeśli 0, aktywne subskrypcje publikacji umożliwiających natychmiastową aktualizację są reaktywowane, pod warunkiem ponownego uruchomienia całej publikacji, a nie tylko niektórych artykułów. Oznacza to, że reinicjalizacja jest inicjowana w wyniku zmian schematu.

  • Jeśli 1, aktywne subskrypcje nie są ponownie aktywowane, dopóki Snapshot Agent nie zostanie uruchomiony.

[ @publisher = ] N'publisher'

Określa wydawcę programu innego niż SQL Server. @publisher to nazwa systemu, z domyślnym .NULL

@publisher nie powinno być używane dla SQL Server wydawców.

[ @ignore_distributor_failure = ] ignore_distributor_failure

Pozwala na ponowną inicjałację nawet jeśli dystrybutor nie istnieje lub jest offline. @ignore_distributor_failure jest bit, z domyślnym obciążeniem 0. Jeśli 0, ponowna inicjalizacja kończy się niepowodzeniem, jeśli dystrybutor nie istnieje lub jest offline.

[ @invalidate_snapshot = ] invalidate_snapshot

Unieważnia istniejący migawkę publikacji. @invalidate_snapshot jest bit, z domyślnym .0 Jeśli 1, generowany jest nowy migawka dla publikacji.

Zwracanie wartości kodu

0 (powodzenie) lub 1 (niepowodzenie).

Remarks

sp_reinitsubscription jest wykorzystywany w replikacji transakcyjnej.

sp_reinitsubscription nie jest obsługiwane dla replikacji transakcyjnej peer-to-peer.

W przypadku subskrypcji, gdzie początkowy snapshot jest stosowany automatycznie i gdzie publikacja nie pozwala na aktualizowalne subskrypcje, Snapshot Agent musi zostać uruchomiony po wykonaniu tej procedury przechowywanej, aby przygotować pliki programu schema i kopiowania masowego, a Distribution Agents mógł ponownie zsynchronizować subskrypcje.

W przypadku subskrypcji, gdzie początkowy snapshot jest stosowany automatycznie, a publikacja pozwala na aktualizację subskrypcji, Distribution Agent synchronizuje subskrypcję z wykorzystaniem najnowszych plików programu schematu i kopiowania masowego wcześniej utworzonego przez Snapshot Agent. Distribution Agent synchronizuje subskrypcję natychmiast po uruchomieniu sp_reinitsubscriptionprzez użytkownika , jeśli Distribution Agent nie jest zajęty. W przeciwnym razie synchronizacja może nastąpić po upływie interwału wiadomości (określonym przez parametr MessageIntervalpolecenia Distribution Agent).

sp_reinitsubscription nie ma wpływu na subskrypcje, gdzie początkowy migawka jest aplikowana ręcznie.

Aby ponownie zsynchronizować anonimowe subskrypcje z publikacją, należy przekazać lub allNULL@subscriber.

Replikacja transakcyjna wspiera ponowną inicjalizację subskrypcji na poziomie artykułu. Migawka artykułu jest ponownie aplikowana do subskrybenta podczas następnej synchronizacji po oznaczeniu artykułu do ponownej inicjalizacji. Jednak jeśli istnieją artykuły zależne, które również subskrybują ten sam Subskrybent, ponowne zastosowanie snapshotu do artykułu może się nie powieść, chyba że artykuły zależne w publikacji również zostaną automatycznie ponownie zainicjalizowane w określonych okolicznościach:

  • Jeśli polecenie wstępne na artykule to drop, artykuły dla widoków powiązanych ze schematem oraz procedur przechowywanych powiązanych ze schematem na obiekcie bazowym tego artykułu również są oznaczane do ponownej inicjalizacji.

  • Jeśli opcja schematu w artykule obejmuje skryptowanie deklarowanej integralności referencyjnej na kluczach głównych, artykuły mające tabele bazowe, z relacjami klucza obcego do tabel bazowych reinicjalizowanego artykułu, również są oznaczane do ponownej inicjalizacji.

Examples

-- 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.

Permissions

Tylko członkowie roli stałego serwera administratora systemu , członkowie roli db_owner stałej bazy danych lub twórca subskrypcji mogą wykonywać sp_reinitsubscription.