Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Instância Gerenciada de SQL do Azure
Este tópico descreve como criar e aplicar o instantâneo inicial no SQL Server usando o SQL Server Management Studio, o Transact-SQL ou o Replication Management Objects (RMO). Publicações de mesclagem que usam filtros parametrizados exigem um instantâneo de duas partes. Para obter mais informações, consulte Criar um instantâneo para uma publicação de mesclagem com filtros parametrizados.
Capturas instantâneas são geradas pelo Agente de Snapshot depois que uma publicação é criada. Eles podem ser gerados:
- Imediatamente. Por padrão, o instantâneo de uma publicação de mesclagem é gerado imediatamente após a criação da publicação no Assistente de Nova Publicação.
- Em um momento agendado. Especifique um agendamento na página Agente de Instantâneo do Assistente para Nova Publicação ou ao usar procedimentos armazenados no RMO (Replication Management Object).
- Manualmente. Execute o Agente de Snapshot no prompt de comando ou no SQL Server Management Studio. Para obter mais informações sobre a execução de agentes, consulte Conceitos dos executáveis do Replication Agent ou Iniciar e interromper um Agente de Replicação (SQL Server Management Studio).
Para replicação de merge, um snapshot é gerado toda vez que o Agente de Snapshot é executado. Para replicação transacional, a geração de instantâneo depende da configuração da propriedade da publicação immediate_sync. Se a propriedade estiver definida como TRUE (o padrão ao usar o Assistente para Nova Publicação), um instantâneo será gerado toda vez que o Agente de Instantâneo for executado, e poderá ser aplicado a um Assinante a qualquer momento. Se a propriedade estiver definida como FALSE (padrão ao usar sp_addpublication), o instantâneo só é gerado se uma assinatura nova for adicionada desde a última execução do Agente de Instantâneo; Assinantes devem esperar que o Agente de Instantâneo termine antes de poder sincronizar-se.
Por padrão, quando os instantâneos são gerados, eles são salvos na pasta padrão de instantâneos que fica no Distribuidor. Você também pode salvar os arquivos de instantâneo em mídia removível, como discos removíveis, CD-ROMs ou em locais diferentes da pasta padrão do instantâneo. Adicionalmente, você poderá comprimir os arquivos para que sejam mais fáceis de armazenar e transferir, e executar os scripts antes ou depois de o instantâneo ser aplicado ao Assinante. Para obter mais informações sobre essas opções, consulte Snapshot Options.
Se o instantâneo for para uma publicação de mesclagem que usa filtros parametrizados, o instantâneo é criado por meio de um processo de duas etapas. Primeiro é criado um instantâneo do esquema que contém os scripts de replicação e o esquema dos objetos publicados, mas não os dados. Cada assinatura é então inicializada com um instantâneo que inclui os scripts e o esquema, copiados do instantâneo do esquema, e os dados que pertencem à partição da assinatura. Para obter mais informações, consulte Snapshots para Publicações de Mesclagem com Filtros Parametrizados.
Depois que o instantâneo for criado no Publicador e armazenado em um local padrão ou alternativo para instantâneos, ele poderá ser transferido para o Assinante e aplicado. O Agente de Distribuição (para replicação de instantâneo ou transacional) ou o Agente de Mesclagem (para replicação de mesclagem) transfere o instantâneo e aplica o esquema e os arquivos de dados ao banco de dados de assinatura no Assinante durante a sincronização inicial. Por padrão, a sincronização inicial acontecerá imediatamente depois que uma assinatura seja criada se você usar o Assistente para Nova Assinatura. Esse comportamento é definido pela opção Inicializar Quando na página Inicializar Assinaturas do assistente. Quando snapshots são gerados depois que uma assinatura é inicializada, eles não são aplicados a um assinante, a menos que a assinatura seja marcada para reinicialização. Para obter mais informações, consulte Reinicializar as assinaturas.
Após o Agente de Distribuição ou o Agente de Mesclagem aplicar o instantâneo inicial, o agente propaga atualizações subsequentes e outras modificações nos dados. Quando snapshots são distribuídos e aplicados aos Assinantes, somente os Assinantes que estiverem aguardando snapshots iniciais ou novos serão afetados. Outros Assinantes daquela publicação (aqueles que já estejam recebendo inserções, atualizações, exclusões ou outras modificações aos dados publicados) não serão afetados.
Para visualizar ou modificar o local padrão da pasta de instantâneos, consulte
SQL Server Management Studio: Modificar opções de snapshots
Programação de replicação e programação de RMO: Configurar Publicação e Distribuição
Local padrão do instantâneo
Especifique o local padrão do instantâneo na página Pasta de instantâneos do Assistente de Configuração da Distribuição. Para obter mais informações sobre como usar o assistente, consulte Configurar a publicação e a distribuição. Se você criar uma publicação em um servidor que não esteja configurado como Distribuidor, especifique um local padrão do instantâneo na página Pasta de instantâneos do Assistente para Nova Publicação. Para obter mais informações sobre como usar esse assistente, consulte Criar uma publicação.
Modifique o local do instantâneo padrão na página Publicadores da caixa de diálogo Propriedades do Distribuidor – <Distribuidor>. Para obter mais informações, consulte Exibir e modificar as propriedades do Distribuidor e do Publicador. Defina a pasta de instantâneos para cada publicação na caixa de diálogo Propriedades da Publicação - <Publicação>. Para obter mais informações, consulte Exibir e Modificar Propriedades da Publicação.
Modificar a localização do instantâneo padrão
Na página Publicadores da caixa de diálogo Propriedades do Distribuidor – <Distribuidor>, clique no botão de propriedades (...) para o Publicador para o qual você deseja alterar a localização do instantâneo padrão.
Na caixa de diálogo Propriedades do Publicador – <Publisher>, digite um valor para a propriedade Pasta de Instantâneo Padrão.
Observação
O Agente de Instantâneo deve ter permissões de gravação para o diretório que você especificar, e o Agente de Distribuição ou Agente de Mesclagem devem ter permissões de leitura. Se as assinaturas pull forem usadas, será necessário especificar um diretório compartilhado como um caminho UNC, como \\computername\snapshot. Para obter mais informações, consulte Proteger a pasta de instantâneos.
Selecione OK.
Criar instantâneo
Por padrão, se o SQL Server Agent estiver sendo executado, um instantâneo será gerado imediatamente pelo Agente de Instantâneo depois que a publicação seja criada com o Assistente para Nova Publicação. Por padrão, isso é então aplicado pelo Agente de Distribuição (para replicações transacionais e instantâneas) ou o Agente de Mesclagem (para assinaturas de mesclagem) para todas as assinaturas. Um instantâneo também pode ser gerado usando o SQL Server Management Studio e o Replication Monitor. Para obter informações sobre como iniciar o Replication Monitor, consulte Start the Replication Monitor (Iniciar o Replication Monitor).
Como usar o SQL Server Management Studio.
- Conecte-se ao Publicador no Management Studio e, em seguida, expanda o nó do servidor.
- Expanda a pasta Replicação e, em seguida, a pasta Publicações Locais .
- Clique com o botão direito do mouse na publicação para a qual você quer criar um instantâneo e, então, clique em Exibir Status do Agente de Instantâneo.
- Na caixa de diálogo Exibir Status do Agente de Instantâneo – <Publicação>, clique em Iniciar.
Quando Agente de Instantâneo terminar de gerar o instantâneo, uma mensagem será exibida, tal como "[100%] Um instantâneo de 17 artigo(s) foi gerado."
No Monitor de Replicação
- No Replication Monitor, expanda um Grupo do publicador no painel esquerdo e, depois, expanda um Publicador.
- Clique com o botão direito do mouse na publicação para a qual você quer gerar um instantâneo e, então, clique em Gerar Instantâneo.
- Para visualizar o status do Agente de Instantâneo, clique na guia Agentes. Para obter informações mais detalhadas, clique com o botão direito do mouse no Agente de Instantâneo na grade e clique em Exibir Detalhes.
Usando o Transact-SQL
Instantâneos iniciais podem ser criados de forma programada criando e executando um trabalho do Agente de Instantâneo ou executando o arquivo executável do Agente de Instantâneo de um arquivo em lote. Após a geração de um instantâneo inicial, ele é transferido para o Assinante e aplicado nele quando a assinatura é sincronizada pela primeira vez. Se você executar o Agente de Instantâneo a partir de um prompt de comando ou de um arquivo em lote, será preciso executá-lo novamente sempre que o instantâneo existente se tornar inválido.
Importante
Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se for necessário armazenar credenciais em um arquivo de script, você deverá proteger o arquivo para impedir acesso não autorizado.
Crie uma publicação de instantâneo, transacional ou de mesclagem. Para obter mais informações, consulte Criar uma publicação.
Execute sp_addpublication_snapshot (Transact-SQL). Especifique @publication e os seguintes parâmetros:
O @job_login, que especifica as credenciais de autenticação do Windows com as quais o Agente de Instantâneo é executado no Distribuidor.
O @job_password, que é a senha para as credenciais do Windows fornecidas.
(Opcional) Um valor de 0 para @publisher_security_mode se o agente usar a Autenticação do SQL Server ao se conectar ao Publicador. Nesse caso, deve-se especificar também a informação de logon da Autenticação do SQL Server para @publisher_login e @publisher_password.
(Opcional) Uma agenda de sincronização para o trabalho do Agente de Instantâneo. Para obter mais informações, consulte Specify Synchronization Schedules.
Importante
Quando um Publicador é configurado com um Distribuidor remoto, os valores fornecidos para todos os parâmetros, inclusive job_login e job_password, são enviados ao Distribuidor como texto sem-formatação. Você deve criptografar a conexão entre o Publicador e seu Distribuidor remoto antes de executar esse procedimento armazenado. Para obter mais informações, confira Habilitar conexões criptografadas para o mecanismo de banco de dados (SQL Server Configuration Manager).
Adicione artigos à publicação. Para obter mais informações, consulte Define an Article.
No Publicador, no banco de dados de publicação, execute sp_startpublication_snapshot (Transact-SQL), especificando o valor de @publication da etapa 1.
Aplicar um snapshot
Como usar o SQL Server Management Studio.
Depois que um instantâneo é gerado, ele é aplicado ao sincronizar a assinatura com o Agente de Distribuição ou o Agente de Mesclagem:
- Se o agente é definido para ser executado continuamente (o padrão para replicação transacional), o instantâneo é automaticamente aplicado após ser gerado.
- Se o agente tiver execução agendada, o instantâneo será aplicado na próxima execução agendada do agente.
- Se o agente estiver configurado para ser executado sob demanda, isso será aplicado na próxima vez em que você executar o agente.
Para obter mais informações sobre assinaturas de sincronização, consulte Synchronize a Push Subscription e Synchronize a Pull Subscription.
Usar o Transact-SQL
Crie uma publicação de instantâneo, transacional ou de mesclagem. Para obter mais informações, consulte Criar uma publicação.
Adicione artigos à publicação. Para obter mais informações, consulte Define an Article.
No prompt de comando ou em um arquivo em lotes, inicie o Agente de Instantâneo de Replicação executando snapshot.exe, especificando os seguintes argumentos de linha de comando:
- -Publicação
- -Publisher
- -Distribuidor
- -PublisherDB
- -ReplicationType
Se você estiver usando Autenticação do SQL Server, deve-se também especificar os seguintes argumentos:
- -DistributorLogin
- -DistributorPassword
- -Modo = de Segurança do Distribuidor0
- -PublisherLogin
- -PublisherPassword
- -Modo = de Segurança do Editor0
Exemplos (Transact-SQL)
Esse exemplo mostra como criar uma publicação transacional e adicionar um trabalho do Agente de Instantâneo para a nova publicação (usando variáveis de script sqlcmd ). O exemplo também inicia a tarefa.
-- 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
Esse exemplo cria uma publicação de mesclagem e adiciona um trabalho do Agente de Instantâneo (usando variáveis sqlcmd ) para a publicação. Este exemplo também inicia a tarefa.
-- 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
Os seguintes argumentos de linha de comando iniciam o Agente de Instantâneo para gerar o snapshot de uma publicação de mesclagem.
Observação
Quebras de linhas foram adicionadas para melhorar a legibilidade. Em um arquivo em lotes, devem ser feitos comandos em uma única linha.
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
Usando os Objetos de Gerenciamento de Replicação (RMO)
O Agente de Snapshot gera snapshots após a criação da publicação. É possível gerar esses instantâneos programaticamente usando os Replication Management Objects (RMO) e o acesso direto por código gerenciado às funcionalidades do agente de replicação. Os objetos usados dependem do tipo de replicação. O Agente de Instantâneo pode ser iniciado usando o objeto SnapshotGenerationAgent ou usando de forma assíncrona o trabalho do agente. Após a geração do instantâneo inicial, ele é transferido para o Assinante e aplicado durante a primeira sincronização da assinatura. Será necessário executar novamente o agente sempre que o instantâneo existente não contiver mais dados válidos e atualizados. Para obter mais informações, consulte Maintain Publications (Manter publicações).
Importante
Quando possível, solicite que os usuários insiram as credenciais de segurança em tempo de execução. Se for preciso armazenar credenciais, use os serviços criptográficos fornecidos pelo Microsoft Windows .NET Framework.
Para gerar o instantâneo inicial de uma publicação de instantâneo ou transacional iniciando o trabalho do Agente de Instantâneo (assíncrono)
Crie uma conexão com o Publicador usando a classe ServerConnection .
Criar uma instância da classe TransPublication. Defina as propriedades Name e DatabaseName para a publicação, e a propriedade ConnectionContext para a conexão criada na etapa 1.
Chame o método LoadProperties para carregar as propriedades remanescentes do objeto. Se esse método retornar false, as propriedades de publicação na etapa 2 foram definidas incorretamente ou a publicação não existe.
Se o valor de SnapshotAgentExists for false, chame CreateSnapshotAgent para criar o trabalho do Snapshot Agent para essa publicação.
Chame o método StartSnapshotGenerationAgentJob para iniciar o trabalho do agente que gera o instantâneo para esta publicação.
(Opcional) Quando o valor de SnapshotAvailable é true, o instantâneo fica disponível para Assinantes.
Para gerar o instantâneo inicial de uma publicação do tipo instantâneo ou transacional executando o Agente de Instantâneo (síncrono)
Crie uma instância da classe SnapshotGenerationAgent e defina as seguintes propriedades necessárias:
Publisher - nome do Publicador
PublisherDatabase - nome do banco de dados de publicação
Publication - nome da publicação
Distributor - nome do Distribuidor
PublisherSecurityMode - um valor de Integrated para usar a Autenticação do Windows para conexão com o Publicador ou um valor de Standard e valores de PublisherLogin e PublisherPassword para usar a Autenticação do SQL Server em conexões com o Publicador. A Autenticação do Windows é recomendável.
DistributorSecurityMode - valor de Integrated para usar a Autenticação do Windows para conexão com o Distribuidor ou um valor de Standard e valores de DistributorLogin e DistributorPassword para usar a Autenticação do SQL Server em conexões com o Distribuidor. A Autenticação do Windows é recomendável.
Defina um valor de Transactional ou Snapshot para ReplicationType.
Chame o método GenerateSnapshot .
Para gerar o instantâneo inicial para uma publicação de mesclagem iniciando o trabalho do Agente de Instantâneo (assíncrono)
Crie uma conexão com o Publicador usando a classe ServerConnection .
Criar uma instância da classe MergePublication. Defina as propriedades Name e DatabaseName para a publicação, e a propriedade ConnectionContext para a conexão criada na etapa 1.
Chame o método LoadProperties para carregar as propriedades remanescentes do objeto. Se esse método retornar false, as propriedades de publicação na etapa 2 foram definidas incorretamente ou a publicação não existe.
Se o valor de SnapshotAgentExists for false, chame CreateSnapshotAgent para criar o trabalho do Snapshot Agent para essa publicação.
Chame o método StartSnapshotGenerationAgentJob para iniciar o trabalho do agente que gera o instantâneo para esta publicação.
(Opcional) Quando o valor de SnapshotAvailable é true, o instantâneo fica disponível para Assinantes.
Para gerar o instantâneo inicial de uma publicação de mesclagem pela execução do Agente de Instantâneo (síncrono)
Crie uma instância da classe SnapshotGenerationAgent e defina as seguintes propriedades necessárias:
Publisher - nome do Publicador
PublisherDatabase - nome do banco de dados de publicação
Publication - nome da publicação
Distributor - nome do Distribuidor
PublisherSecurityMode - um valor de Integrated para usar a Autenticação do Windows para conexão com o Publicador ou um valor de Standard e valores de PublisherLogin e PublisherPassword para usar a Autenticação do SQL Server em conexões com o Publicador. A Autenticação do Windows é recomendável.
DistributorSecurityMode - valor de Integrated para usar a Autenticação do Windows para conexão com o Distribuidor ou um valor de Standard e valores de DistributorLogin e DistributorPassword para usar a Autenticação do SQL Server em conexões com o Distribuidor. A Autenticação do Windows é recomendável.
Defina um valor de Merge para ReplicationType.
Chame o método GenerateSnapshot .
Exemplos (RMO)
Esse exemplo executa o Agente de Instantâneo sincronicamente para gerar o instantâneo inicial para uma publicação transacional.
// 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
Este exemplo inicia de forma assíncrona a tarefa do agente para gerar o instantâneo inicial de uma publicação transacional.
// 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
Bloqueio ao aplicar o instantâneo inicial
Se você tiver várias publicações que publicam dados em um único banco de dados no(s) assinante(s), ao aplicar o(s) instantâneo(s) inicial(is), você perceberá que apenas uma publicação consegue aplicar seu instantâneo por vez.
Você pode ver um recurso de espera semelhante ao seguinte ao analisar a atividade do SQL:
APP: 18:16384:[snapshot_delivery_in_progress_Tr]:(9bcdaf92)
APP: 5:16384:[snapshot_delivery_in_progress_Er]:(3c3b7db9)
A consulta do comportamento de bloqueio pode mostrar recursos semelhantes aos seguintes:
APP 16384:[appname]:(fbe42d68) XAPP 16384:[snapshot_del]:(9bcdaf92) X
Este comportamento ocorre por design. Isso ocorre porque um bloqueio de aplicação é usado para impedir que vários agentes de replicação apliquem, simultaneamente, instantâneos de diferentes publicações ao mesmo banco de dados do assinante. Como o bloqueio do aplicativo contém o nome do banco de dados do assinante, todas as publicações que forem publicadas no mesmo banco de dados do assinante serão afetadas. O resultado é que apenas um instantâneo pode ser inserido no banco de dados do assinante em um determinado momento.
Bloqueios exclusivos são usados nessa situação para ajudar a evitar a possibilidade de os agentes de replicação ficarem bloqueados uns com os outros.
Para contornar esse problema, especifique um banco de dados de assinantes diferente para cada publicação.
Conteúdo relacionado
- Criar uma publicação
- Criar uma Assinatura de Pull
- Criar uma assinatura push
- Especificar agendas de sincronização
- Inicialize uma Assinatura com um Snapshot para uma Nova Publicação
- Conceitos de Objetos de Gerenciamento de Replicação
- Práticas recomendadas de segurança de replicação
- Conceitos de procedimentos armazenados do sistema de replicação
- Usar sqlcmd com variáveis de script