Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Azure SQL Managed Instance
Markeert het abonnement voor herinitialisatie. Deze opgeslagen procedure wordt uitgevoerd bij de Publisher voor push-abonnementen.
Transact-SQL syntaxis-conventies
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'publicatie'
De naam van de publicatie.
@publication is een systeemnaam, met als standaard .all
[ @article = ] N'artikel'
De naam van het artikel.
@article is een systeemnaam, met als standaard .all Voor een publicatie die direct wordt bijgewerkt, moet @article .all Anders slaat de opgeslagen procedure de publicatie over en rapporteert een fout.
[ @subscriber = ] N'abonnee'
De naam van de abonnee. @subscriber is sysname, zonder standaardinstelling.
[ @destination_db = ] N'destination_db'
De naam van de bestemmingsdatabase.
@destination_db is een systeemnaam, met standaard .all
[ @for_schema_change = ] for_schema_change
Geeft aan of herinitialisatie plaatsvindt als gevolg van een schemawijziging in de publicatiedatabase.
@for_schema_change is bit, met als standaard .0
Als
0, worden actieve abonnementen voor publicaties die directe updates mogelijk maken opnieuw geactiveerd zolang de hele publicatie, en niet slechts enkele artikelen, opnieuw worden geïntinitieerd. Dit betekent dat de herinitialisatie wordt gestart als gevolg van schemawijzigingen.Als
1, worden actieve abonnementen pas opnieuw geactiveerd als de Snapshot Agent draait.
[ @publisher = ] N'uitgever'
Hiermee geeft u een niet-SQL Server-uitgever.
@publisher is sysname, met als standaard NULL.
@publisher zou niet gebruikt moeten worden voor SQL Server uitgevers.
[ @ignore_distributor_failure = ] ignore_distributor_failure
Maakt herinitialisatie mogelijk, zelfs als de Distributor niet bestaat of offline is.
@ignore_distributor_failure is bit, met als standaard 0. Als 0, mislukt de herinitialisatie als de Distributor niet bestaat of offline is.
[ @invalidate_snapshot = ] invalidate_snapshot
Maakt de bestaande publicatie-snapshot ongeldig.
@invalidate_snapshot is bit, met als standaard .0 Als 1, wordt een nieuwe snapshot gegenereerd voor de publicatie.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Remarks
sp_reinitsubscription wordt gebruikt bij transactionele replicatie.
sp_reinitsubscription wordt niet ondersteund voor peer-to-peer transactionele replicatie.
Voor abonnementen waarbij de initiële snapshot automatisch wordt toegepast en waar de publicatie geen updateerbare abonnementen toestaat, moet de Snapshot Agent worden uitgevoerd nadat deze opgeslagen procedure is uitgevoerd, zodat schema- en bulkkopiebestanden van programmabestanden zijn voorbereid en de Distribution Agents vervolgens de abonnementen opnieuw kan synchroniseren.
Voor abonnementen waarbij de initiële snapshot automatisch wordt toegepast en de publicatie updateerbare abonnementen toestaat, synchroniseert de Distribution Agent het abonnement opnieuw met het meest recente schema en bulkkopieert eerder door de Snapshot Agent gemaakte programmabestanden. De Distribution Agent synchroniseert het abonnement direct opnieuw nadat de gebruiker heeft uitgevoerdsp_reinitsubscription, als de Distribution Agent niet bezig is. Anders kan synchronisatie plaatsvinden na het berichtinterval (gespecificeerd door de Distribution Agent-promptparameter MessageInterval).
sp_reinitsubscription heeft geen effect op abonnementen waarbij de initiële snapshot handmatig wordt toegepast.
Om anonieme abonnementen op een publicatie, passend all of NULL als @subscriber, opnieuw te synchroniseren.
Transactionele replicatie ondersteunt abonnementsherinitialisatie op artikelniveau. De snapshot van het artikel wordt opnieuw toegepast bij de abonnee tijdens de volgende synchronisatie nadat het artikel is gemarkeerd voor herinitialisatie. Als er echter afhankelijke artikelen zijn waarop dezelfde abonnee zich heeft geabonneerd, kan het opnieuw toepassen van de snapshot op het artikel mislukken, tenzij afhankelijke artikelen in de publicatie onder bepaalde omstandigheden automatisch opnieuw worden geïntitialiseerd:
Als het precreation-commando op het artikel is
drop, worden artikelen voor schema-bound views en schema-bound stored procedures op het basisobject van dat artikel ook gemarkeerd voor herinitialisatie.Als de schema-optie op het artikel het scripten van gedeclareerde referentieintegriteit op de primaire sleutels bevat, worden artikelen met basistabellen met vreemde sleutelrelaties met basistabellen van het herinitialiseerde artikel ook gemarkeerd voor herinitialisatie.
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
Alleen leden van de sysadmin-fixedserverrol , leden van de db_owner fixed database-rol, of de maker van het abonnement kunnen uitvoeren sp_reinitsubscription.