Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Esse recurso será removido em uma versão futura do Microsoft SQL Server. Evite usar esse recurso em um novo trabalho de desenvolvimento e planeje modificar aplicativos que atualmente usam esse recurso.
A replicação transacional permite que as alterações feitas em um Assinante sejam propagadas de volta para o Publicador usando assinaturas de atualização imediatas ou enfileiradas. Você pode criar uma assinatura de atualização programaticamente usando procedimentos armazenados de replicação.
Configure assinaturas atualizáveis na página Assinaturas Atualizáveis do Novo Assistente de Assinatura. Esta página só estará disponível se você tiver habilitado uma publicação transacional para assinaturas atualizáveis. Para obter mais informações sobre como habilitar assinaturas atualizáveis, consulte Habilitar a atualização de assinaturas para publicações transacionais.
Configurar uma assinatura atualizável do Publicador
Conecte-se ao Publicador no Microsoft SQL Server Management Studio e, em seguida, expanda o nó do servidor.
Expanda a pasta Replicação e expanda a pasta Publicações Locais .
Clique com o botão direito do mouse em uma publicação transacional habilitada para atualizar assinaturas e clique em Novas Assinaturas.
Siga as páginas do assistente para especificar as opções para a assinatura, como onde o Agente de Distribuição deve ser executado.
Na página Assinaturas Atualizáveis do Assistente para Nova Assinatura, verifique se Replicar está selecionado.
Selecione uma opção na lista suspensa Confirmar no Publicador :
- Para usar assinaturas de atualização imediata, selecione Confirmar alterações simultaneamente. Se você selecionar essa opção e a publicação permitir assinaturas de atualização em fila (o padrão para publicações criadas com o Assistente de Nova Publicação), a propriedade update_mode da assinatura será definida como failover. Esse modo permite que você alterne para a atualização na fila mais tarde, se necessário.
- Para usar assinaturas de atualização em fila, selecione Enfileirar alterações e confirmar quando possível. Se você selecionar essa opção e a publicação permitir assinaturas de atualização imediata (o padrão para publicações criadas com o Assistente de Nova Publicação) e o Assinante estiver executando o SQL Server 2005 ou uma versão posterior, a propriedade update_mode da assinatura será definida como failover em fila. Esse modo permite que você alterne para a atualização imediata mais tarde, se necessário.
Para obter informações sobre como alternar os modos de atualização, consulte Alternar entre modos de atualização para uma assinatura transacional atualizável.
A página Login para Assinaturas Atualizáveis é exibida para assinaturas que usam atualização imediata ou têm update_mode definido como failover em fila. Na página Logon para Assinaturas Atualizáveis, especifique um servidor vinculado sobre o qual são feitas conexões com o Publicador para a atualização imediata de assinaturas. As conexões são utilizadas pelos gatilhos que são acionados no Assinante e propagam alterações para o Editor. Selecione uma das seguintes opções:
- Crie um servidor vinculado que se conecte usando a Autenticação do SQL Server. Selecione essa opção se você não tiver definido um servidor remoto ou servidor vinculado entre o Assinante e o Publicador. A replicação cria um servidor vinculado para você. A conta especificada já deve existir no Publicador.
- Use um servidor vinculado ou um servidor remoto que você já definiu. Selecione essa opção se você definiu um servidor remoto ou um servidor vinculado entre o Assinante e o Publicador usando sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio ou outro método.
Para obter informações sobre as permissões exigidas pela conta de servidor vinculada, consulte as assinaturas em atualizações de fila da [descrição do link aqui].
Conclua o assistente.
Configurar uma assinatura atualizável do Assinante
Conecte-se ao Assinante no SQL Server Management Studio, e expanda o nó do servidor.
Expanda a pasta Replicação .
Clique com o botão direito do mouse na pasta Assinaturas Locais e clique em Novas Assinaturas.
Na página Publicação do Assistente para Nova Assinatura, selecione Localizar Publicador do SQL Server no menu suspenso do Publicador.
Conecte-se ao Publicador na caixa de diálogo Conectar ao Servidor .
Selecione uma publicação transacional habilitada para atualizar assinaturas na página Publicação .
Siga as páginas no assistente para especificar as opções da assinatura, como o local onde o Agente de Distribuição deve ser executado.
Na página Assinaturas Atualizáveis do Assistente para Nova Assinatura, verifique se Replicar está selecionado.
Selecione uma opção na lista suspensa Confirmar no Publicador :
- Para usar assinaturas de atualização imediata, selecione Confirmar alterações simultaneamente. Se você selecionar essa opção e a publicação permitir assinaturas com atualização em fila (o padrão para publicações criadas com o Assistente de Nova Publicação), a propriedade update_mode da assinatura será definida como failover. Esse modo permite que você alterne para a atualização na fila mais tarde, se necessário.
- Para usar assinaturas de atualização na fila, selecione Alterações na fila e confirme quando possível. Se você selecionar esta opção e a publicação permitir assinaturas com atualização imediata (o padrão para publicações criadas com o Assistente de Nova Publicação), e se o Assinante estiver rodando o SQL Server 2005 ou uma versão posterior, a propriedade de assinatura update_mode será configurada como failover em fila. Esse modo permite que você alterne para a atualização imediata mais tarde, se necessário.
Para obter informações sobre como alternar os modos de atualização, consulte Alternar entre modos de atualização para uma assinatura transacional atualizável.
A página Login para Assinaturas Atualizáveis é exibida para assinaturas que usam atualização imediata ou têm update_mode configurado para failover em fila. Na página Logon para Assinaturas Atualizáveis, especifique um servidor vinculado através do qual são feitas conexões com o Publicador para a atualização imediata de assinaturas. As conexões são utilizadas pelos gatilhos que são acionados no Assinante e propagam alterações para o Editor. Selecione uma das seguintes opções:
- Crie um servidor vinculado que se conecte usando a Autenticação do SQL Server. Selecione essa opção se você não tiver definido um servidor remoto ou servidor vinculado entre o Assinante e o Publicador. A replicação cria um servidor vinculado para você. A conta especificada já deve existir no Publicador.
- Use um servidor vinculado ou um servidor remoto que você já definiu. Selecione essa opção se você definiu um servidor remoto ou um servidor vinculado entre o Assinante e o Publicador usando sp_addserver (Transact-SQL), sp_addlinkedserver (Transact-SQL), SQL Server Management Studio ou outro método.
Para obter informações sobre as permissões exigidas pela conta de servidor vinculada, consulte as assinaturas de atualizações em fila da insira a descrição do link aqui.
Conclua o assistente.
Criar uma inscrição de pull para atualização imediata
No Publicador, verifique se a publicação suporta assinaturas com atualização imediata executando sp_helppublication.
- Se o valor em
allow_sync_tranno conjunto de resultados for1, a publicação suporta assinaturas de atualização imediata. - Se o valor de
allow_sync_tranno conjunto de resultados for0, a publicação deverá ser recriada com a assinatura de atualização imediata habilitada.
- Se o valor em
No Publicador, verifique se a publicação dá suporte a assinaturas pull executando sp_helppublication.
- Se o valor de
allow_pullno conjunto de resultados é1, a publicação oferece suporte a assinaturas pull. - Se o valor de
allow_pullfor0, execute sp_changepublication, especificandoallow_pullpara@propertyetruepara@value.
- Se o valor de
No Assinante, execute sp_addpullsubscription. Especifique
@publishere@publication, e um dos seguintes valores para@update_mode:-
sync tran– habilita a assinatura para atualização imediata. -
failover– habilita a assinatura para atualização imediata com atualização em fila como uma opção de contingência.
Observação
-
failoverrequer que a publicação também seja habilitada para assinaturas de atualização na fila.
No Assinante, execute sp_addpullsubscription_agent. Especifique o seguinte:
- Os
@publisher,@publisher_dbe@publicationparâmetros. - As credenciais do Microsoft Windows sob as quais o Agente de Distribuição no Assinante é executado
@job_logine@job_password.
Observação
- Os
As conexões feitas usando a Autenticação Integrada do Windows são sempre feitas usando as credenciais do Windows especificadas por
@job_logine@job_password. O Agente de Distribuição sempre faz a conexão local com o Assinante usando a Autenticação Integrada do Windows. Por padrão, o agente se conecta ao Distribuidor usando a Autenticação Integrada do Windows.
* (Optional) A value of `0` for `@distributor_security_mode` and the Microsoft SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor.
* A schedule for the Distribution Agent job for this subscription.
No Assinante do banco de dados de assinatura, execute sp_link_publication. Especifique
@publisher,@publicationo nome do banco de dados de publicação e@publisher_dbum dos seguintes valores para@security_mode:-
0– Use a Autenticação do SQL Server ao fazer atualizações no Publicador. Essa opção exige que você especifique um logon válido no Publicador para@logine@password. -
1– Use o contexto de segurança do usuário que está fazendo alterações no subscritor ao conectar-se ao Publicador. Consulte sp_link_publication para obter restrições relacionadas a esse modo de segurança. -
2- Use um logon existente de servidor vinculado definido pelo usuário, criado usando sp_addlinkedserver.
-
No publicador, execute sp_addsubscription especificando
@publication,@subscriber,@destination_db, um valor de pull para@subscription_type, e o mesmo valor especificado na etapa 3 para@update_mode.
Isso registra a associação pull no Publisher.
Criar uma assinatura push de atualização imediata
No Publicador, verifique se a publicação suporta a atualização imediata de assinaturas executando sp_helppublication.
- Se o valor do conjunto de
allow_sync_tranresultados for1, a publicação oferecerá suporte a assinaturas de atualização imediata. - Se o valor de
allow_sync_tranno conjunto de resultados for0, a publicação deverá ser recriada com as assinaturas de atualização imediata habilitadas.
- Se o valor do conjunto de
No Publicador, verifique se a publicação dá suporte a assinaturas push executando sp_helppublication.
- Se o valor de
allow_pushno conjunto de resultados for1, a publicação oferece suporte a assinaturas push. - Se o valor de
allow_pushfor0, execute sp_changepublication, especificandoallow_pushpara@propertyetruepara@value.
- Se o valor de
No Publicador, execute sp_addsubscription. Especifique
@publication,@subscriber@destination_dbe um dos seguintes valores para@update_mode:-
sync tran– habilita o suporte para atualização imediata. -
failover– habilita o suporte para atualização imediata com atualização na fila como uma opção de contingência.
Observação
-
failoverrequer que a publicação também seja habilitada para assinaturas de atualização em fila.
No Publicador, execute o sp_addpushsubscription_agent. Especifique os seguintes parâmetros:
-
@subscriber,@subscriber_dbe@publication. - As credenciais do Windows sob as quais o Agente de Distribuição no Distribuidor é executado para
@job_logine@job_password.
Observação
-
As conexões feitas usando a Autenticação Integrada do Windows são sempre feitas usando as credenciais do Windows especificadas por
@job_logine@job_password. O Agente de Distribuição sempre faz a conexão local com o Distribuidor usando a Autenticação Integrada do Windows. Por padrão, o agente se conectará ao Assinante usando a Autenticação Integrada do Windows.
* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber.
* A schedule for the Distribution Agent job for this subscription.
No banco de dados de assinantes, execute sp_link_publication. Especifique
@publisher,@publicationo nome do banco de dados de publicação e@publisher_dbum dos seguintes valores para@security_mode:-
0– Use a Autenticação do SQL Server ao fazer atualizações no Publicador. Essa opção exige que você especifique um logon válido no Publicador para@logine@password. -
1– Utilize o contexto de segurança do usuário que está realizando alterações no Assinante ao conectar-se ao Publicador. Consulte sp_link_publication para obter restrições relacionadas a esse modo de segurança. -
2- Use um login de servidor vinculado já existente definido pelo usuário criado usando sp_addlinkedserver.
-
Criar uma assinatura pull em fila de atualização
No Publicador, verifique se a publicação suporta assinaturas de atualização em fila executando sp_helppublication.
- Se o valor de
allow_queued_tranno conjunto de resultados for1, a publicação suporta assinaturas de atualização imediata. - Se o valor de
allow_queued_tranno conjunto de resultados for0, a publicação deverá ser recriada com assinaturas habilitadas para atualização em fila.
- Se o valor de
No Publicador, verifique se a publicação suporta assinaturas pull executando sp_helppublication.
- Se o valor do conjunto de
allow_pullresultados for1, a publicação oferecerá suporte a assinaturas pull. - Se o valor de
allow_pullfor0, execute sp_changepublication, especificarallow_pullpara@propertyetruepara@value.
- Se o valor do conjunto de
No Assinante, execute sp_addpullsubscription. Especifique
@publishere@publication, e um dos seguintes valores para@update_mode:-
queued tran– habilita a assinatura para atualizações em fila. -
queued failover– habilita o suporte para atualização em fila e atualização imediata como uma opção de contingência.
Observação
-
queued failoverrequer que a publicação esteja também habilitada para assinaturas com atualização imediata. Para alternar para a atualização imediata, você deve usar sp_link_publication para definir as credenciais mediante as quais as alterações do Assinante são replicadas no Publicador.
No Assinante, execute sp_addpullsubscription_agent. Especifique os seguintes parâmetros:
-
@publisher,
@publisher_dbe@publication. - As credenciais do Windows sob as quais o Agente de Distribuição no Assinante é executado para
@job_logine@job_password.
Observação
-
@publisher,
As conexões feitas usando a Autenticação Integrada do Windows são sempre feitas usando as credenciais do Windows especificadas por
@job_logine@job_password. O Agente de Distribuição sempre faz a conexão local com o Assinante usando a Autenticação Integrada do Windows. Por padrão, o agente se conecta ao Distribuidor usando a Autenticação Integrada do Windows.
* (Optional) A value of `0` for `@distributor_security_mode` and the SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor.
* A schedule for the Distribution Agent job for this subscription.
- No publicador, execute sp_addsubscriber para registrar o Assinante no Publicador, especificando
@publication,@subscriber,@destination_dbum valor de pull para@subscription_type, e o mesmo valor especificado na etapa 3 para@update_mode.
Isso registra a assinatura pull no Publicador.
Para criar uma assinatura push de atualizações em fila
No Publicador, verifique se a publicação dá suporte a assinaturas de atualização em fila executando sp_helppublication.
- Se o valor de allow_queued_tran no conjunto de resultados for 1, a publicação suporta assinaturas com atualização imediata.
- Se o valor de allow_queued_tran no conjunto de resultados for 0, a publicação deverá ser recriada com assinaturas de atualização na fila habilitadas. Para obter mais informações, consulte Como habilitar a atualização de assinaturas para publicações transacionais (replicação Transact-SQL programação).
No Publicador, verifique se a publicação dá suporte a assinaturas push executando sp_helppublication.
- Se o valor de
allow_pushno conjunto de resultados for1, a publicação suporta assinaturas push. - Se o valor de
allow_pushfor0, execute sp_changepublication, especificando allow_push para@propertyetruepara@value.
- Se o valor de
No Publicador, execute sp_addsubscription. Especifique
@publication,@subscriber@destination_dbe um dos seguintes valores para@update_mode:-
queued tran– habilita a assinatura para atualizações em fila. -
queued failover– habilita o suporte para atualização em fila com atualização imediata como uma opção de tolerância a falhas.
Observação
-
A opção de failover na fila requer que a publicação também seja habilitada para assinaturas de atualização imediata. Para fazer a transferência automática para atualização imediata, você deve usar sp_link_publication para definir as credenciais sob as quais as alterações feitas no Assinante são replicadas para o Publicador.
No Publicador, execute sp_addpushsubscription_agent. Especifique os seguintes parâmetros:
-
@subscriber,@subscriber_dbe@publication. - As credenciais do Windows sob as quais o Agente de Distribuição no Distribuidor é executado para
@job_logine@job_password.
Observação
-
As conexões feitas usando a Autenticação Integrada do Windows são sempre feitas usando as credenciais do Windows especificadas por
@job_logine@job_password. O Agente de Distribuição sempre faz a conexão local com o Distribuidor usando a Autenticação Integrada do Windows. Por padrão, o agente se conecta ao Assinante usando a Autenticação Integrada do Windows.
* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber.
* A schedule for the Distribution Agent job for this subscription.
Exemplo
Este exemplo cria uma assinatura de pull com atualização imediata para uma publicação que oferece suporte a assinaturas com atualização imediata. Os valores de logon e senha são fornecidos em runtime usando variáveis de script sqlcmd.
Observação
Esse script usa variáveis de script sqlcmd. Eles estão na forma $(MyVariable). Para obter informações sobre como usar variáveis de script na linha de comando e no SQL Server Management Studio, consulte a seção Executando Scripts de Replicação no tópico Conceitos de Procedimentos Armazenados do Sistema de Replicação.
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks2008R2';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);
-- At the subscription database, create a pull subscription to a transactional
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB,
@update_mode = N'failover',
@subscription_type = N'pull';
-- Add an agent job to synchronize the pull subscription,
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@job_login = @login,
@job_password = @password;
-- Add a Windows Authentication-based linked server that enables the
-- Subscriber-side triggers to make updates at the Publisher.
EXEC sp_link_publication
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB,
@security_mode = 0,
@login = @login,
@password = @password;
GO
USE AdventureWorks2008R2;
GO
-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriptionDB = N'AdventureWorks2008R2Replica';
SET @subscriber = $(SubServer);
-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'pull',
@update_mode = N'failover';
GO
Definir opções de resolução de conflitos de atualização em fila (SQL Server Management Studio)
Defina opções de resolução de conflitos para publicações que dão suporte à atualização enfileirada de assinaturas na página Opções de Assinatura da caixa de diálogo Propriedades da Publicação – <Publicação> . Para obter mais informações sobre como acessar essa caixa de diálogo, consulte Exibir e modificar propriedades de publicação.
Para definir opções de resolução de conflitos de atualização em espera
- Na página Opções de Assinatura da caixa de diálogo Propriedades da Publicação – <Publicação> , selecione um dos seguintes valores para a opção de política de resolução de conflitos :
- Manter a alteração do Publicador
- Manter a alteração do Assinante
- Reinicializar a assinatura
- Clique em OK.
Consulte Também
Criar uma publicação
Assinaturas atualizáveis para replicação transacional
Usar sqlcmd com variáveis de script