Maak en pas de eerste snapshot toe

Van toepassing op:SQL ServerAzure SQL Managed Instance

Dit artikel beschrijft hoe je de eerste snapshot maakt en toepast in SQL Server met behulp van SQL Server Management Studio, Transact-SQL of Replication Management Objects (RMO). Samenvoegpublicaties die geparametriseerde filters gebruiken, vereisen een snapshot in twee delen. Raadpleeg Een momentopname maken voor een samenvoegpublicatie met geparameteriseerde filters voor meer informatie.
De Snapshot Agent genereert snapshots nadat een publicatie is aangemaakt. Je kunt snapshots genereren:

Voor merge-replicatie genereert de Snapshot Agent elke keer dat het wordt uitgevoerd een snapshot. Voor transactionele replicatie hangt het genereren van snapshots af van de instelling van de publicatieeigenschap immediate_sync. Als de eigenschap op TRUE is gezet (de standaard bij gebruik van de New Publication Wizard), genereert de Snapshot Agent elke keer dat deze wordt uitgevoerd een snapshot en kan deze op elk moment op een abonnee worden toegepast. Als de eigenschap is ingesteld op FALSE (de standaard bij gebruik van sp_addpublication), genereert de Snapshot Agent alleen een snapshot als er sinds de laatste Snapshot Agent een nieuw abonnement is toegevoegd; Abonnees moeten wachten tot de Snapshot Agent voltooid is voordat ze kunnen synchroniseren.

Standaard slaat de Snapshot Agent gegenereerde snapshots op in de standaard snapshotmap op de Distributor. Je kunt snapshotbestanden ook opslaan op verwisselbare media zoals verwisselbare schijven, cd-rom's of op andere locaties dan de standaard snapshotmap. Je kunt de bestanden ook comprimeren om ze makkelijker op te slaan en over te zetten, en scripts uitvoeren vóór of nadat de Snapshot Agent de snapshot toepast bij de abonnee. Voor meer informatie over deze opties, zie Snapshot-opties.

Als de snapshot bedoeld is voor een merge-publicatie die geparametriseerde filters gebruikt, maakt de Snapshot Agent de snapshot door gebruik te maken van een proces in twee delen. Ten eerste maakt het een schema-snapshot dat de replicatiescripts en het schema van de gepubliceerde objecten bevat, maar niet de data. Elk abonnement initialiseert vervolgens met een snapshot die de scripts en het schema bevat dat uit de schema-snapshot zijn gekopieerd, evenals de gegevens die bij de partitie van het abonnement horen. Zie Momentopnamen voor het samenvoegen van publicaties met geparameteriseerde filters voor meer informatie.

Nadat de Snapshot Agent de snapshot bij de Publisher heeft aangemaakt en opgeslagen op een standaard of alternatieve snapshotlocatie, kun je de snapshot overzetten naar de abonnee en toepassen. De Distribution Agent (voor snapshot of transactionele replicatie) of Merge Agent (voor merge-replicatie) draagt de snapshot over en past het schema en de databestanden toe op de abonnementsdatabase van de abonnee tijdens de initiële synchronisatie. Standaard vindt de initiële synchronisatie direct plaats nadat je een abonnement hebt aangemaakt als je de New Subscription Wizard gebruikt. De optie Initialiseren Wanneer op de pagina Initialiseren Abonnementen van de wizard regelt dit gedrag. Wanneer de Snapshot Agent snapshots genereert nadat een abonnement is geïnitialiseerd, worden ze niet toegepast op een abonnee, tenzij je een abonnement markeert voor herinitialisatie. Zie Abonnementen opnieuw initialiseren voor meer informatie.

Nadat de Distribution Agent of Merge Agent de initiële snapshot heeft toegepast, geeft de agent vervolgens latere updates en andere gegevenswijzigingen door. Wanneer snapshots worden verspreid en toegepast op abonnees, worden alleen die abonnees die wachten op de eerste of nieuwe snapshots beïnvloed. Andere abonnees van die publicatie (degenen die al inserts, updates, verwijderingen of andere wijzigingen aan de gepubliceerde data ontvangen) worden niet getroffen.

De locatie van de standaardmap voor momentopnamen bekijken of wijzigen, zie

Standaardlocatie voor momentopnamen

Geef de standaard snapshotlocatie op op de Snapshot-mappagina van de Configure Distribution Wizard. Voor meer informatie over het gebruik van deze wizard, zie Configure Publishing and Distribution. Als je een publicatie aanmaakt op een server die niet als Distributeur is geconfigureerd, specificeer dan een standaard snapshotlocatie op de Snapshot-mappagina van de New Publication Wizard. Voor meer informatie over het gebruik van deze wizard, zie Create a Publication.

Pas de standaard snapshotlocatie aan op de pagina Uitgevers in het dialoogvenster Distributor Properties - <Distributor> . Voor meer informatie, zie Bekijk en wijzig Distributor en Publisher Properties. Stel de snapshotmap voor elke publicatie in het dialoogvenster Publicatie-eigenschappen - <Publicatie> in. Zie Publicatie-eigenschappen weergeven en wijzigen voor meer informatie.

Pas de standaard snapshotlocatie aan

  1. Op de pagina Uitgevers van het dialoogvenster Distributor Properties - <Distributor> selecteer je de eigenschappen-knop (...) voor de Publisher waarvoor je de standaard snapshotlocatie wilt wijzigen.

  2. In het dialoogvenster Publisher Properties - <Publisher> voert u een waarde in voor de eigenschap Default Snapshot Folder.

    Note

    De Snapshot Agent heeft schrijfrechten nodig voor de door u gespecificeerde map, en de Distribution Agent of Merge Agent heeft leesrechten nodig. Als je pull-abonnementen gebruikt, moet je een gedeelde map specificeren als een universal naming convention (UNC)-pad, zoals \\computername\snapshot. Voor meer informatie, zie de map Momentopname beveiligen.

  3. Kies OK.

Momentopname maken

Standaard, als de SQL Server Agent draait, genereert de Snapshot Agent direct na het aanmaken van een publicatie een snapshot met behulp van de New Publication Wizard. Standaard past de Distribution Agent (voor snapshot en transactionele replicatie) of Merge Agent (voor merge-abonnementen) vervolgens de snapshot toe voor alle abonnementen. Je kunt ook een snapshot genereren door gebruik te maken van SQL Server Management Studio en Replication Monitor. Zie Replicatiecontrole starten voor meer informatie over het starten van replicatiecontrole.

SQL Server Management Studio gebruiken

  1. Maak verbinding met Publisher in Management Studio en vouw vervolgens het serverknooppunt uit.
  2. Vouw de map Replicatie uit en vouw vervolgens de map Lokale publicaties uit.
  3. Klik met de rechtermuisknop op de publicatie waarvoor je een snapshot wilt maken en selecteer vervolgens View Snapshot Agent Status.
  4. Selecteer Start in het dialoogvenster Status van snapshot-agent weergeven - <Publicatie>.
    Wanneer de Snapshot Agent klaar is met het genereren van de snapshot, toont het een bericht, zoals "[100%] Er is een snapshot van 17 artikel(en) gegenereerd."

In replicatiemonitor

  1. Vouw in Replication Monitor een Publisher-groep uit in het linkerdeelvenster en vouw vervolgens een Uitgever uit.
  2. Klik met de rechtermuisknop op de publicatie waarvoor je een snapshot wilt genereren en selecteer vervolgens Snapshot genereren.
  3. Om de status van de Snapshot Agent te bekijken, selecteert u het tabblad Agents. Voor meer gedetailleerde informatie klikt u met de rechtermuisknop op de Snapshot Agent in het raster en selecteert u vervolgens View Details.

Transact-SQL gebruiken

Je kunt initiële snapshots programmatisch maken door een Snapshot Agent-taak te maken en uit te voeren, of door het uitvoerbare bestand van de Snapshot Agent uit een batchbestand te draaien. Nadat een eerste snapshot is gegenereerd, wordt deze overgedragen aan en toegepast op de abonnee wanneer het abonnement voor het eerst wordt gesynchroniseerd. Als je de Snapshot Agent draait vanuit een opdrachtprompt of een batchbestand, moet je de agent opnieuw uitvoeren telkens wanneer de bestaande snapshot ongeldig wordt.

Important

Indien mogelijk vraagt u gebruikers om beveiligingsreferenties in te voeren tijdens runtime. Als u referenties in een scriptbestand moet opslaan, moet u het bestand beveiligen om onbevoegde toegang te voorkomen.

  1. Maak een snapshot-, transactionele of samengevoegde publicatie. Zie Een publicatie maken voor meer informatie.

  2. Voer sp_addpublication_snapshot uit (Transact-SQL). Specificeer @publication en de volgende parameters:

    • De @job_login, die de Windows authenticatiegegevens specificeert waaronder de Snapshot Agent bij de distributeur draait.

    • De @job_password, dat is het wachtwoord voor de verstrekte Windows inloggegevens.

    • (Optioneel) Een waarde van 0 voor @publisher_security_mode als de agent SQL Server Authenticatie gebruikt bij het verbinden met de Publisher. In dit geval moet je ook de SQL Server Authentication logingegevens voor @publisher_login en @publisher_password opgeven.

    • (Optioneel) Een synchronisatieschema voor de Snapshot Agent-taak. Zie Synchronisatieschema's opgeven voor meer informatie.

    Important

    Wanneer je een Publisher configureert voor gebruik met een externe Distributor, worden de waarden die je opgeeft voor alle parameters, inclusief job_login en job_password, als onbewerkte tekst naar de Distributor verzonden. Versleutel de verbinding tussen de Publisher en zijn externe distributeur voordat je deze opgeslagen procedure uitvoert. Zie Versleutelde verbindingen met de database-engine inschakelen (SQL Server Configuration Manager) voor meer informatie.

  3. Voeg artikelen toe aan de publicatie. Zie Een artikel definiëren voor meer informatie.

  4. Voer op de Publisher in de publicatiedatabase sp_startpublication_snapshot (Transact-SQL) uit en geef de waarde op van @publication uit stap 1.

Pas een snapshot toe

SQL Server Management Studio gebruiken

Nadat de snapshot is gegenereerd, synchroniseer je het abonnement met de Distribution Agent of de Merge Agent om deze toe te passen:

  • Als de agent continu draait (de standaard voor transactionele replicatie), past hij de snapshot automatisch toe nadat hij deze heeft gegenereerd.

  • Als de agent volgens een schema draait, past hij de snapshot toe bij de volgende uitvoering.

  • Als de agent op aanvraag draait, past hij de snapshot toe bij de volgende keer dat je het uitvoert.

    Zie Een pushabonnement synchroniseren en een pull-abonnement synchroniseren voor meer informatie over het synchroniseren van abonnementen.

Gebruik Transact-SQL

  1. Maak een snapshot-, transactionele of samengevoegde publicatie. Zie Een publicatie maken voor meer informatie.

  2. Voeg artikelen toe aan de publicatie. Zie Een artikel definiëren voor meer informatie.

  3. Start vanaf de opdrachtprompt of in een batchbestand de Replicatie-Snapshot Agent door snapshot.exeuit te voeren , waarbij de volgende commandoregelargumenten worden gespecificeerd:

    • -Publicatie
    • -Uitgever
    • -Verdeler
    • -PublisherDB
    • -ReplicationType

    Als je SQL Server Authentication gebruikt, specificeer dan ook de volgende argumenten:

    • -DistributorLogin
    • -DistributorPassword
    • -DistributorSecurityMode = 0
    • -PublisherLogin
    • -PublisherPassword
    • -PublisherSecurityMode = 0

Voorbeelden (Transact-SQL)

Dit voorbeeld laat zien hoe je een transactionele publicatie aanmaakt en een Snapshot Agent-taak toevoegt voor de nieuwe publicatie (met sqlcmd-scriptvariabelen). Het voorbeeld start ook de taak.

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. 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 @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2022'; --publication database
SET @publication = N'AdvWorksCustomerTran'; -- transactional publication name
SET @login = $(Login);
SET @password = $(Password);

USE [AdventureWorks]

-- Enable transactional and snapshot replication on the publication database.
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname = N'publish',
  @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
  @job_login = @login, 
  @job_password = @password,
  -- Explicitly specify the security mode used when connecting to the Publisher.
  @publisher_security_mode = 1;

-- Create new transactional publication, using the defaults. 
USE [AdventureWorks2022]
EXEC sp_addpublication 
  @publication = @publication, 
  @description = N'transactional publication';

-- Create a new snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot 
  @publication = @publication,
  @job_login = @login,
  @job_password = @password;

-- Start the Snapshot Agent job.
EXEC sp_startpublication_snapshot @publication = @publication;
GO

Dit voorbeeld maakt een merge-publicatie aan en voegt een Snapshot Agent-taak toe (met sqlcmd-variabelen) voor de publicatie. Dit voorbeeld start ook de taak.

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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 @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2022'; 
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @login = $(Login);
SET @password = $(Password);

-- Enable merge replication on the publication database.
USE master
EXEC sp_replicationdboption 
  @dbname = @publicationDB, 
  @optname=N'merge publish',
  @value = N'true';

-- Create new merge publication, using the defaults. 
USE [AdventureWorks]
EXEC sp_addmergepublication 
  @publication = @publication, 
  @description = N'Merge publication.';

-- Create a new snapshot job for the publication, using the defaults.
EXEC sp_addpublication_snapshot 
  @publication = @publication,
  @job_login = @login,
  @job_password = @password;

-- Start the Snapshot Agent job.
EXEC sp_startpublication_snapshot @publication = @publication;
GO

De volgende commandoregelargumenten starten de Snapshot Agent om de snapshot te genereren voor een mergepublicatie.

Note

Regelafbrekingen werden toegevoegd voor een betere leesbaarheid. In een batchbestand moet je commando's in één regel uitvoeren.

  
REM -- Declare variables  
SET Publisher=%InstanceName%  
SET PublicationDB=AdventureWorks2022   
SET Publication=AdvWorksSalesOrdersMerge   
  
REM --Start the Snapshot Agent to generate the snapshot for AdvWorksSalesOrdersMerge.  
"C:\Program Files\Microsoft SQL Server\120\COM\SNAPSHOT.EXE" -Publication %Publication%   
-Publisher %Publisher% -Distributor %Publisher% -PublisherDB %PublicationDB%   
-ReplicationType 2 -OutputVerboseLevel 1 -DistributorSecurityMode 1  
  

Replicatiebeheerobjecten (RMO) gebruiken

De Snapshot Agent genereert snapshots nadat je een publicatie hebt gemaakt. Je kunt deze snapshots programmatisch genereren door gebruik te maken van Replication Management Objects (RMO) en directe beheerde code-toegang tot replicatieagentfunctionaliteiten. De objecten die je gebruikt hangen af van het type replicatie. Je kunt de Snapshot Agent synchroon starten door het SnapshotGenerationAgent object te gebruiken of asynchroon door de agent-taak te gebruiken. Nadat de initiële snapshot is gegenereerd, draagt de Snapshot Agent deze over aan de abonnee en past deze toe wanneer het abonnement voor het eerst wordt gesynchroniseerd. Je moet de agent opnieuw uitvoeren zodra de bestaande snapshot niet langer geldige, up-to-datum data bevat. Voor meer informatie, zie Publicaties onderhouden.

Important

Indien mogelijk vraagt u gebruikers om beveiligingsreferenties in te voeren tijdens runtime. Als je gegevens moet opslaan, gebruik dan de cryptografische diensten die door het Microsoft Windows .NET Framework worden aangeboden.

Door de Snapshot Agent-taak te starten (asynchroon), kunt u de initiële snapshot genereren voor een snapshot- of transactionele publicatie

  1. Maak een verbinding met publisher met behulp van de ServerConnection klasse.

  2. Maak een exemplaar van de TransPublication-klasse. Stel voor de publicatie de eigenschappen Name en DatabaseName in, en stel de eigenschap ConnectionContext in op de verbinding die in stap 1 is aangemaakt.

  3. Roep de LoadProperties methode aan om de resterende eigenschappen van het object te laden. Als deze methode false teruggeeft, zijn de publicatie-eigenschappen in stap 2 óf verkeerd gedefinieerd óf bestaat de publicatie niet.

  4. Als de waarde van SnapshotAgentExistsfalse is, roep dan CreateSnapshotAgent aan om de snapshotagenttaak voor deze publicatie te maken.

  5. Roep de methode StartSnapshotGenerationAgentJob aan om de agenttaak te starten die de snapshot voor deze publicatie genereert.

  6. (Optioneel) Wanneer de waarde van SnapshotAvailablewaar is, is de snapshot beschikbaar voor abonnees.

Om de initiële snapshot voor een snapshot- of transactionele publicatie te genereren door de Snapshot-agent uit te voeren (synchroon)

  1. Maak een instantie van de SnapshotGenerationAgent klasse aan en stel de volgende vereiste eigenschappen in:

  2. Stel een waarde van Transactional of Snapshot voor ReplicationType.

  3. Roep de GenerateSnapshot methode aan.

Om de initiële snapshot voor een mergepublicatie te genereren door de Snapshot Agent-taak te starten (asynchroon)

  1. Maak een verbinding met publisher met behulp van de ServerConnection klasse.

  2. Maak een exemplaar van de MergePublication-klasse. Stel voor de publicatie de eigenschappen Name en DatabaseName in, en stel de eigenschap ConnectionContext in op de verbinding die in stap 1 is aangemaakt.

  3. Roep de LoadProperties methode aan om de resterende eigenschappen van het object te laden. Als deze methode false teruggeeft, zijn de publicatie-eigenschappen in stap 2 óf verkeerd gedefinieerd óf bestaat de publicatie niet.

  4. Als de waarde van SnapshotAgentExistsfalse is, roep dan CreateSnapshotAgent aan om de snapshotagenttaak voor deze publicatie te maken.

  5. Roep de methode StartSnapshotGenerationAgentJob aan om de agenttaak te starten die de snapshot voor deze publicatie genereert.

  6. (Optioneel) Wanneer de waarde van SnapshotAvailablewaar is, is de snapshot beschikbaar voor abonnees.

Om de initiële snapshot voor een mergepublicatie te genereren door de Snapshot Agent (synchronous) uit te voeren

  1. Maak een instantie van de SnapshotGenerationAgent klasse aan en stel de volgende vereiste eigenschappen in:

  2. Stel een waarde van Merge in voor ReplicationType.

  3. Roep de GenerateSnapshot methode aan.

Voorbeelden (RMO)

Dit voorbeeld voert synchroon de Snapshot Agent uit om de initiële snapshot voor een transactionele publicatie te genereren.

// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
string publisherName = publisherInstance;
string distributorName = publisherInstance;

SnapshotGenerationAgent agent;

try
{
    // Set the required properties for Snapshot Agent.
    agent = new SnapshotGenerationAgent();
    agent.Distributor = distributorName;
    agent.DistributorSecurityMode = SecurityMode.Integrated;
    agent.Publisher = publisherName;
    agent.PublisherSecurityMode = SecurityMode.Integrated;
    agent.Publication = publicationName;
    agent.PublisherDatabase = publicationDbName;
    agent.ReplicationType = ReplicationType.Transactional;

    // Start the agent synchronously.
    agent.GenerateSnapshot();

}
catch (Exception ex)
{
    // Implement custom application error handling here.
    throw new ApplicationException(String.Format(
        "A snapshot could not be generated for the {0} publication."
        , publicationName), ex);
}
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"
Dim publisherName As String = publisherInstance
Dim distributorName As String = publisherInstance

Dim agent As SnapshotGenerationAgent

Try
    ' Set the required properties for Snapshot Agent.
    agent = New SnapshotGenerationAgent()
    agent.Distributor = distributorName
    agent.DistributorSecurityMode = SecurityMode.Integrated
    agent.Publisher = publisherName
    agent.PublisherSecurityMode = SecurityMode.Integrated
    agent.Publication = publicationName
    agent.PublisherDatabase = publicationDbName
    agent.ReplicationType = ReplicationType.Transactional

    ' Start the agent synchronously.
    agent.GenerateSnapshot()

Catch ex As Exception
    ' Implement custom application error handling here.
    Throw New ApplicationException(String.Format( _
     "A snapshot could not be generated for the {0} publication." _
     , publicationName), ex)
End Try

Dit voorbeeld start de agenttaak asynchroon op om de initiële snapshot voor een transactionele publicatie te genereren.

// Set the Publisher, publication database, and publication names.
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
string publisherName = publisherInstance;

TransPublication publication;

// Create a connection to the Publisher using Windows Authentication.
ServerConnection conn;
conn = new ServerConnection(publisherName);

try
{
    // Connect to the Publisher.
    conn.Connect();

    // Set the required properties for an existing publication.
    publication = new TransPublication();
    publication.ConnectionContext = conn;
    publication.Name = publicationName;
    publication.DatabaseName = publicationDbName;

    if (publication.LoadProperties())
    {
        // Start the Snapshot Agent job for the publication.
        publication.StartSnapshotGenerationAgentJob();
    }
    else
    {
        throw new ApplicationException(String.Format(
            "The {0} publication does not exist.", publicationName));
    }
}
catch (Exception ex)
{
    // Implement custom application error handling here.
    throw new ApplicationException(String.Format(
        "A snapshot could not be generated for the {0} publication."
        , publicationName), ex);
}
finally
{
    conn.Disconnect();
}
' Set the Publisher, publication database, and publication names.
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"
Dim publisherName As String = publisherInstance

Dim publication As TransPublication

' Create a connection to the Publisher using Windows Authentication.
Dim conn As ServerConnection
conn = New ServerConnection(publisherName)

Try
    ' Connect to the Publisher.
    conn.Connect()

    ' Set the required properties for an existing publication.
    publication = New TransPublication()
    publication.ConnectionContext = conn
    publication.Name = publicationName
    publication.DatabaseName = publicationDbName

    If publication.LoadProperties() Then
        ' Start the Snapshot Agent job for the publication.
        publication.StartSnapshotGenerationAgentJob()
    Else
        Throw New ApplicationException(String.Format( _
         "The {0} publication does not exist.", publicationName))
    End If
Catch ex As Exception
    ' Implement custom application error handling here.
    Throw New ApplicationException(String.Format( _
     "A snapshot could not be generated for the {0} publication." _
     , publicationName), ex)
Finally
    conn.Disconnect()
End Try

Blokkeren bij het toepassen van de initiële snapshot

Als je meerdere publicaties hebt die data in één database publiceren bij de abonnees, merk je dat slechts één publicatie zijn snapshot tegelijk kan toepassen terwijl de initiële snapshots worden toegepast.

Je kunt een wachtbron tegenkomen die lijkt op de volgende bij het bekijken van SQL-activiteiten:

APP: 18:16384:[snapshot_delivery_in_progress_Tr]:(9bcdaf92)
APP: 5:16384:[snapshot_delivery_in_progress_Er]:(3c3b7db9
)

Het opvragen van vergrendelingsgedrag kan bronnen laten zien die vergelijkbaar zijn met de volgende:

APP 16384:[appname]:(fbe42d68) XAPP 16384:[snapshot_del]:(9bcdaf92) X

Dit gedrag is opzettelijk ontworpen. Dit gebeurt omdat een applicatielock wordt gebruikt om te voorkomen dat meerdere replicatieagenten gelijktijdig snapshots van verschillende publicaties toepassen op dezelfde abonneedatabase. Omdat de applicatievergrendeling de naam van de abonneedatabase bevat, worden publicaties die in dezelfde abonneedatabase publiceren beïnvloed. Het resultaat is dat er slechts één snapshot tegelijk in de abonneedatabase kan worden ingevoegd.

Exclusieve sloten worden in deze situatie gebruikt om te voorkomen dat replicatieagenten met elkaar vastlopen.

Om dit probleem te omzeilen, specificeer je voor elke publicatie een andere abonneedatabase.