Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
Azure SQL Managed Instance
Tento článek popisuje, jak vytvořit a aplikovat počáteční snímek v SQL Server pomocí SQL Server Management Studio, Transact-SQL nebo Replication Management Objects (RMO). Sloučení publikací, které používají parametrizované filtry, vyžadují dvoudílný snímek. Pro více informací viz Vytvořit snímek pro sloučení publikace s parametrizovanými filtry.
Snapshot Agent generuje snapshoty po vytvoření publikace. Můžete generovat snímky:
- Okamžitě. Ve výchozím nastavení Průvodce novými publikacemi vygeneruje snapshot pro sloučení publikace ihned po vytvoření publikace.
- V domluvený čas. Určte harmonogram na stránce Snapshot Agent v Vydavači nových publikací nebo při použití uložených procedur či objektů správy replikace (RMO).
- Ručně. Spusť Snapshot Agent z příkazového řádku nebo ze SQL Server Management Studio. Pro více informací o spouštění agentů viz Koncepty spustitelných souborů replikačních agentů a Start and Stop a Replication Agent (SQL Server Management Studio).
Pro replikaci při slučování generuje Snapshot Agent snapshot pokaždé, když se spustí. Pro transakční replikaci závisí generování snímků na nastavení publikační vlastnosti immediate_sync. Pokud je vlastnost nastavena na TRUE (výchozí při použití Průvodce nové publikace), Snapshot Agent vygeneruje snapshot pokaždé, když se spustí, a může ji kdykoli aplikovat na odběratele. Pokud je vlastnost nastavena na FALSE (výchozí při použití sp_addpublication), Snapshot Agent vygeneruje snapshot pouze tehdy, pokud je od posledního Snapshot Agent přidáno nové předplatné; Předplatitelé musí počkat, až Snapshot Agent dokončí, než se mohou synchronizovat.
Ve výchozím nastavení Snapshot Agent ukládá generované snímky do výchozí složky snapshotů umístěné na distributoru. Soubory snímků můžete také uložit na vyměnitelná média, jako jsou vyměnitelné disky, CD-ROMy nebo na místa jiná než výchozí složka snímků. Soubory můžete také komprimovat, aby se lépe ukládaly a přenášely, a spouštět skripty před nebo po aplikaci snapshotu Snapshot Agent na odběratele. Pro více informací o těchto možnostech viz Možnosti snapshotů.
Pokud je snapshot pro publikaci merge, která používá parametrizované filtry, Snapshot Agent ji vytvoří pomocí dvoufázového procesu. Nejprve vytvoří snapshot schématu, který obsahuje replikační skripty a schéma publikovaných objektů, ale ne data. Každé předplatné se pak inicializuje snapshotem, který zahrnuje skripty a schéma zkopírované ze snímku schématu a data patřící do partition předplatného. Další informace naleznete v tématu Snímky pro sloučení publikací s parametrizovanými filtry.
Poté, co Snapshot Agent vytvoří snapshot u Publisher a uloží ho na výchozí nebo alternativní místo, můžete snapshot převést na Subscriber a aplikovat ho. Distribution Agent (pro snapshot nebo Transactional Replication) nebo Merge Agent (pro merge replication) přenáší snapshot a aplikuje schéma a datové soubory do databáze předplatného na Subscriber během počáteční synchronizace. Ve výchozím nastavení proběhne počáteční synchronizace ihned po vytvoření odběru, pokud použijete Průvodce vytvořením nového odběru. Možnost Inicializovat při na stránce Inicializovat odběry v průvodci řídí toto chování. Když Snapshot Agent generuje snapshoty po inicializaci předplatného, neaplikuje je na odběratele, pokud předplatné neoznačíte k opětovné inicializaci. Další informace najdete v tématu Opětovné inicializace předplatných.
Po aplikaci počátečního snapshotu Distribution Agent nebo Merge Agent propaguje následné aktualizace a další úpravy dat. Když jsou snapshoty distribuovány a aplikovány na Odběratele, jsou ovlivněni pouze ti Odběratelé čekající na počáteční nebo nové snapshoty. Ostatní odběratelé této publikace (ti, kteří již dostávají vložení, aktualizace, mazání nebo jiné úpravy zveřejněných dat) nejsou ovlivněni.
Pro zobrazení nebo úpravu výchozího umístění složky snímků viz
SQL Server Management Studio: Upravit možnosti snapshotů
Replikační programování a RMO programování: Konfigurace publikování a distribuce
Výchozí umístění snímku
Zadejte výchozí umístění snapshotu na stránce složky Snapshot v Configure Distribution Wizard. Pro více informací o používání tohoto průvodce viz Konfigurace publikování a distribuce. Pokud vytvoříte publikaci na serveru, který není nakonfigurován jako distributor, zadejte výchozí umístění snímku na stránce složky Snapshot v Průvodce novou publikací. Pro více informací o používání tohoto průvodce viz Vytvořit publikaci.
Upravte výchozí umístění snímku na stránce Vydavatel v dialogovém okně Vlastnosti distributora - <Distributor> . Další informace naleznete v tématu Zobrazení a úprava vlastností distributora a vydavatele. Nastavte složku snímků pro každou publikaci v dialogovém okně Vlastnosti publikace – <Publikace> . Další informace naleznete v tématu Zobrazit a upravit vlastnosti publikace.
Upravte výchozí umístění snímku
Na stránce Publishers v dialogovém okně Vlastnosti distributora - <Distributor> vyberte tlačítko vlastnosti (...) pro Publisher, pro které chcete změnit výchozí umístění snímku.
V dialogovém okně Publisher Properties - <Publisher> zadejte hodnotu vlastnosti Default Snapshot Folder.
Note
Snapshot Agent potřebuje oprávnění k zápisu pro adresář, který určíte, a Distribution Agent nebo Merge Agent potřebují oprávnění ke čtení. Pokud používáte pull subscriptions, musíte zadat sdílený adresář jako univerzální cestu pojmenovávací konvence (UNC), například \\computername\snapshot. Další informace najdete v tématu Zabezpečení složky snímků.
Vyberte OK.
Vytvořit snímek
Ve výchozím nastavení, pokud běží SQL Server Agent, Snapshot Agent vygeneruje snapshot ihned po vytvoření publikace pomocí průvodce Novou publikací. Ve výchozím nastavení pak Distribution Agent (pro snapshot a Transactional Replication) nebo Merge Agent (pro merge subscriptions) aplikuje snapshot na všechna předplatná. Snapshot můžete také vygenerovat pomocí SQL Server Management Studio a Replication Monitor. Informace o spuštění služby Replication Monitor naleznete v tématu Spuštění monitorování replikace.
Použití aplikace SQL Server Management Studio
- Připojte se k Publisher v Management Studiu a potom rozbalte uzel serveru.
- Rozbalte složku Replikace a potom rozbalte složku Místní publikace .
- Klikněte pravým tlačítkem na publikaci, pro kterou chcete vytvořit snapshot, a poté vyberte View Snapshot Agent Status.
- V dialogovém okně Zobrazit Snapshot Agent Status - <Publikace> vyberte Start.
Když Snapshot Agent dokončí generování snímku, zobrazí zprávu, například "[100%] Byl vygenerován snímek 17 článků."
V monitoru replikace
- V nástroji Sledování replikace rozbalte v levém podokně skupinu vydavatele a potom rozbalte položku Publisher.
- Klikněte pravým tlačítkem na publikaci, pro kterou chcete vygenerovat snímek, a poté vyberte Vygenerovat snímek.
- Pro zobrazení stavu Snapshot Agent vyberte záložku Agenti. Pro podrobnější informace klikněte pravým tlačítkem na Snapshot Agent v mřížce a poté vyberte Zobrazit podrobnosti.
Použití Transact-SQL
Počáteční snapshoty můžete vytvářet programovaně, například vytvořením a spuštěním úlohy Snapshot Agent nebo spuštěním spustitelného souboru Snapshot Agent z dávkového souboru. Po vygenerování počátečního snímku je předán a aplikován na odběratele při první synchronizaci předplatného. Pokud spustíte Snapshot Agent z příkazového řádku nebo dávkového souboru, musíte agenta znovu spustit pokaždé, když se stávající snapshot stane neplatným.
Important
Pokud je to možné, vyzve uživatele, aby za běhu zadali přihlašovací údaje zabezpečení. Pokud musíte přihlašovací údaje uložit do souboru skriptu, zabezpečte ho, aby se zabránilo neoprávněnému přístupu.
Vytvořte snapshot, transakční nebo sloučení publikace. Další informace naleznete v tématu Vytvoření publikace.
Vykonejte sp_addpublication_snapshot (Transact-SQL). Specifikujte @publication a následující parametry:
@job_login, který specifikuje Windows autentizační přihlašovací údaje, pod nimiž Snapshot Agent běží u distributora.
Parametr @job_password, což je heslo k zadaným přihlašovacím údajům systému Windows.
(Volitelné) Hodnota 0 pro @publisher_security_mode pokud agent použije SQL Server autentizaci při připojení k Publisher. V tomto případě musíte také zadat přihlašovací údaje SQL Server Authentication pro @publisher_login a @publisher_password.
(Volitelné) Synchronizační plán pro práci Snapshot Agent. Další informace naleznete v tématu Určení plánů synchronizace.
Important
Když konfigurujete Publisher s vzdáleným distributorem, hodnoty, které zadáte pro všechny parametry, včetně job_login a job_password, jsou distributoři odeslány jako čistý text. Před vykonáním tohoto uloženého postupu zašifrujte spojení mezi Publisher a jeho vzdáleným distributorem. Další informace najdete v tématu Povolení šifrovaných připojení k databázovému stroji (SQL Server Configuration Manager).
Přidejte do publikace články. Další informace najdete v tématu Definování článku.
Na Publisher v databázi publikací proveďte sp_startpublication_snapshot (Transact-SQL), přičemž specifikujte hodnotu @publication od kroku 1.
Použít snímek
Použití aplikace SQL Server Management Studio
Po vygenerování snapshotu synchronizujte předplatné s Distribution Agent nebo Merge Agent, abyste jej aplikovali:
Pokud agent běží nepřetržitě (výchozí pro transakční replikaci), automaticky aplikuje snapshot poté, co ho vygeneruje.
Pokud agent běží podle plánu, aplikuje snapshot při dalším spuštění programu.
Pokud se agent spouští na vyžádání, použije snímek, až ho příště spustíte.
Další informace o synchronizaci předplatných naleznete v tématu Synchronizace odesílaného předplatného a Synchronizace přijatého předplatného.
Použijte Transact-SQL
Vytvořte snapshot, transakční nebo sloučení publikace. Další informace naleznete v tématu Vytvoření publikace.
Přidejte do publikace články. Další informace najdete v tématu Definování článku.
Z příkazového řádku nebo v dávkovém souboru spusťte Agent snímku replikace spuštěním souboru snapshot.exe se zadáním následujících argumentů příkazového řádku:
- -Publikace
- -Vydavatel
- -Distributor
- -PublisherDB
- -ReplicationType
Pokud používáte SQL Server Authentication, uveďte také následující argumenty:
- -DistributorLogin
- -DistributorPassword
- -DistributorSecurityMode = 0
- -PublisherLogin
- -PublisherPassword
- -PublisherSecurityMode = 0
Příklady (Transact-SQL)
Tento příklad ukazuje, jak vytvořit transakční publikaci a přidat úlohu Snapshot Agent pro novou publikaci (pomocí sqlcmd skriptovacích proměnných). Příklad také začíná práci.
-- 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
Tento příklad vytvoří slučovací publikaci a přidá pro ni úlohu agenta Snapshot Agent (pomocí proměnných sqlcmd). Tento příklad také začíná práci.
-- 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
Následující argumenty příkazového řádku spouštějí agenta Snapshot, aby vygeneroval snímek pro slučovací publikaci.
Note
Byly přidány zalomení řádků pro lepší čitelnost. V dávkovém souboru musíte zadat příkazy v jednom řádku.
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
Použití objektů správy replikace (RMO)
Snapshot Agent generuje snapshoty poté, co vytvoříte publikaci. Tyto snímky můžete programově generovat pomocí Replication Management Objects (RMO) a přímého přístupu ke spravovanému kódu k funkcím replikačního agenta. Objekty, které používáte, závisí na typu replikace. Snapshot Agent můžete spustit synchronně pomocí objektu SnapshotGenerationAgent nebo asynchronně pomocí agentní úlohy. Po vygenerování počátečního snapshotu jej Snapshot Agent přenese předplatiteli a aplikuje ho při první synchronizaci předplatného. Musíte znovu spustit agenta vždy, když stávající snímek už neobsahuje platná a aktuální data. Pro více informací viz Udržujte publikace.
Important
Pokud je to možné, vyzve uživatele, aby za běhu zadali přihlašovací údaje zabezpečení. Pokud musíte uchovávat přihlašovací údaje, použijte kryptografické služby poskytované Microsoft Windows .NET Frameworkem.
Pro vytvoření počátečního snímku pro snapshot nebo transakční publikaci zahájením úlohy Snapshot Agent (asynchronní)
Vytvořte připojení k Publisheru pomocí ServerConnection třídy.
Vytvořte instanci TransPublication třídy. Nastavte pro publikaci vlastnosti Name a DatabaseName a vlastnost ConnectionContext nastavte na připojení vytvořené v kroku 1.
Zavolejte metodu LoadProperties pro načtení zbývajících vlastností objektu. Pokud tato metoda vrací nepravdu, buď jsou vlastnosti publikace v kroku 2 definovány nesprávně, nebo publikace neexistuje.
Pokud má hodnotu SnapshotAgentExists, zavolejte CreateSnapshotAgent a vytvořte úlohu agenta snímků pro tuto publikaci.
Zavoláním metody StartSnapshotGenerationAgentJob spustíte úlohu agenta, která pro tuto publikaci vygeneruje snímek.
(Volitelné) Když je hodnota pravdiváSnapshotAvailable, snapshot je dostupný předplatitelům.
Vygenerovat počáteční snímek pro publikaci snímků nebo transakční publikaci spuštěním agenta Snapshot Agent (synchronně)
Vytvořte instanci SnapshotGenerationAgent třídy a nastavte následující požadované vlastnosti:
Publisher- název Publisher
PublisherDatabase - název databáze publikací
Publication - název publikace
Distributor - název distributora
PublisherSecurityMode - hodnota Integrated pro použití ověřování systému Windows při připojování k vydavateli nebo hodnota Standard a hodnoty PublisherLogin a PublisherPassword pro použití ověřování SQL Server při připojování k vydavateli. Doporučuje se ověřování systému Windows.
DistributorSecurityMode- hodnotu pro Integrated použití Windows Authentication při připojení k distributoru nebo hodnotu Standard a hodnoty pro DistributorLogin a DistributorPassword pro použití SQL Server Authentication při připojení k distributorovi. Doporučuje se ověřování systému Windows.
Nastavte pro ReplicationType hodnotu Transactional nebo Snapshot.
Zavolejte metodu GenerateSnapshot .
Vygenerovat počáteční snímek pro publikaci slučování spuštěním úlohy agenta Snapshot (asynchronně)
Vytvořte připojení k Publisheru pomocí ServerConnection třídy.
Vytvořte instanci MergePublication třídy. Nastavte pro publikaci vlastnosti Name a DatabaseName a vlastnost ConnectionContext nastavte na připojení vytvořené v kroku 1.
Zavolejte metodu LoadProperties pro načtení zbývajících vlastností objektu. Pokud tato metoda vrací nepravdu, buď jsou vlastnosti publikace v kroku 2 definovány nesprávně, nebo publikace neexistuje.
Pokud má hodnotu SnapshotAgentExists, zavolejte CreateSnapshotAgent a vytvořte úlohu agenta snímků pro tuto publikaci.
Zavoláním metody StartSnapshotGenerationAgentJob spustíte úlohu agenta, která pro tuto publikaci vygeneruje snímek.
(Volitelné) Když je hodnota pravdiváSnapshotAvailable, snapshot je dostupný předplatitelům.
Pro vytvoření počátečního snímku pro sloučení publikace spuštěním Snapshot Agent (synchronní)
Vytvořte instanci SnapshotGenerationAgent třídy a nastavte následující požadované vlastnosti:
Publisher- název Publisher
PublisherDatabase - název databáze publikací
Publication - název publikace
Distributor - název distributora
PublisherSecurityMode - hodnota Integrated pro použití ověřování systému Windows při připojování k vydavateli nebo hodnota Standard a hodnoty PublisherLogin a PublisherPassword pro použití ověřování SQL Server při připojování k vydavateli. Doporučuje se ověřování systému Windows.
DistributorSecurityMode- hodnotu pro Integrated použití Windows Authentication při připojení k distributoru nebo hodnotu Standard a hodnoty pro DistributorLogin a DistributorPassword pro použití SQL Server Authentication při připojení k distributorovi. Doporučuje se ověřování systému Windows.
Nastavte hodnotu Merge pro ReplicationType.
Zavolejte metodu GenerateSnapshot .
Příklady (RMO)
Tento příklad synchronně spouští Snapshot Agent k vytvoření počátečního snapshotu pro transakční publikaci.
// 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
Tento příklad asynchronně spouští úkol agenta, který generuje počáteční snímek pro transakční publikaci.
// 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
Blokování při aplikaci počátečního snímku
Pokud máte více publikací, které publikují data do jedné databáze na straně odběratelů, zjistíte, že při použití počátečních snímků může svůj snímek současně použít pouze jedna publikace.
Při kontrole aktivity SQL můžete vidět prostředek čekání, jako je následující:
APLIKACE: 18:16384:[snapshot_delivery_in_progress_Tr]:(9bcdaf92)
APLIKACE: 5:16384:[snapshot_delivery_in_progress_Er]:(3c3b7db9)
Dotaz na chování zámku může zobrazovat zdroje podobné následujícímu:
APP 16384:[appname]:(fbe42d68) XAPP 16384:[snapshot_del]:(9bcdaf92) X
Toto chování je záměrné. K tomu dochází proto, že aplikační zámek se používá k zabránění tomu, aby více replikačních agentů současně aplikovalo snímky různých publikací do stejné databáze předplatitelů. Protože aplikační zámek obsahuje název databáze předplatitelů, všechny publikace, které se zveřejní do stejné databáze předplatitelů, budou ovlivněny. Výsledkem je, že do databáze předplatitelů lze v daném okamžiku vložit pouze jeden snapshot.
V této situaci se používají exkluzivní zámky, aby se zabránilo možnosti vzájemného zablokování replikačních agentů.
Aby se tento problém obešel, určete pro každou publikaci jinou databázi předplatitelů.
Související obsah
- Vytvoření publikace
- Vytvořte si pull předplatné
- Vytvořit odběr push oznámení
- Určení plánů synchronizace
- Inicializujte předplatné pomocí snímku pro nové vydání
- koncepty objektů správy replikace
- Osvědčené postupy zabezpečení replikace
- Koncepty uložených procedur systému replikace
- Použití sqlcmd se skriptovacími proměnnými