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.
Aplica-se a:SQL Server
Azure SQL Managed Instance
Transact-SQL arquivos de script podem ser usados para configurar programaticamente uma topologia de replicação. Para obter mais informações, consulte Conceitos de procedimentos armazenados do sistema de replicação.
Importante
Embora não seja necessário atualizar scripts executados por membros da função sysadmin , recomendamos que você modifique os scripts existentes conforme descrito neste tópico. Especifique uma conta que tenha permissões mínimas para cada agente de replicação, conforme descrito na seção "Permissões exigidas pelos agentes" do tópico Modelo de segurança do agente de replicação.
Esses aprimoramentos de segurança, que permitem mais controle sobre as permissões, permitindo que você especifique explicitamente as contas do Microsoft Windows sob as quais os trabalhos do agente de replicação são executados, afetam os seguintes procedimentos armazenados em scripts existentes:
sp_addpublication_snapshot:
Agora você deve fornecer as credenciais do Windows como
@job_logine@job_passwordao executar sp_addpublication_snapshot (Transact-SQL) para criar o trabalho sob o qual o Snapshot Agent é executado no Distribuidor.sp_addpushsubscription_agent:
Agora você deve executar sp_addpushsubscription_agent (Transact-SQL) para adicionar explicitamente um trabalho e fornecer as credenciais do Windows (
@job_logine@job_password) sob as quais o trabalho do Agente de Distribuição é executado no Distribuidor. Em versões do SQL Server anteriores ao SQL Server 2005 (9.x), isso era feito automaticamente quando uma assinatura por push era criada.sp_addmergepushsubscription_agent:
Agora você deve executar sp_addmergepushsubscription_agent (Transact-SQL) para adicionar explicitamente um trabalho e fornecer as credenciais do Windows (
@job_logine@job_password) sob as quais o trabalho do Merge Agent é executado no Distribuidor. Em versões do SQL Server anteriores ao SQL Server 2005 (9.x), isso era feito automaticamente quando uma assinatura por push era criada.sp_addpullsubscription_agent:
Agora você deve fornecer as credenciais do Windows como
@job_logine@job_passwordao executar sp_addpullsubscription_agent (Transact-SQL) para criar o trabalho sob o qual o Agente de Distribuição é executado no Assinante.sp_addmergepullsubscription_agent:
Agora você deve fornecer as credenciais do Windows como
@job_logine@job_passwordao executar sp_addmergepullsubscription_agent (Transact-SQL) para criar o trabalho sob o qual o Merge Agent é executado no Assinante.sp_addlogreader_agent:
Agora você deve executar sp_addlogreader_agent (Transact-SQL) para adicionar manualmente o trabalho e fornecer as credenciais do Windows sob as quais o Log Reader Agent é executado no Distribuidor. Nas versões do SQL Server anteriores ao SQL Server 2005 (9.x), isso era feito automaticamente quando uma publicação transacional era criada.
sp_addqreader_agent:
Agora você deve executar sp_addqreader_agent (Transact-SQL) para adicionar manualmente o trabalho e fornecer as credenciais do Windows sob as quais o Queue Reader Agent é executado no Distribuidor. Em versões do SQL Server anteriores ao SQL Server 2005 (9.x), isso era feito automaticamente quando uma publicação transacional que dava suporte à atualização em fila era criada.
No modelo de segurança introduzido no SQL Server 2005 (9.x), os agentes de replicação sempre fazem conexões com a instância local do SQL Server com a Autenticação do Windows usando as credenciais fornecidas em @job_name e @job_password. Para obter informações sobre os requisitos das contas do Windows usadas ao executar trabalhos do agente de replicação, consulte Modelo de segurança do agente de replicação.
Importante
Quando possível, solicite que os usuários insiram credenciais de segurança em tempo de execução. Se você armazenar credenciais em um arquivo de script, verifique se o próprio arquivo está protegido.
Para atualizar scripts que configurem um instantâneo ou uma publicação transacional
No script existente, antes de sp_addpublication (Transact-SQL), execute sp_addlogreader_agent (Transact-SQL) no Publicador no banco de dados da publicação. Especifique as credenciais do Windows sob as quais o Log Reader Agent é executado para
@job_namee@job_password. Se o agente usar a Autenticação do SQL Server ao se conectar ao Editor, você também deverá especificar um valor de 0 para@publisher_security_modee as informações de logon do SQL Server para@publisher_logine@publisher_password. Isso cria uma tarefa do Log Reader Agent para o banco de dados de publicação.Observação
Esta etapa é apenas para publicações transacionais e não é necessária para publicações instantâneas.
(Opcional) Antes de sp_addpublication (Transact-SQL), execute sp_addqreader_agent (Transact-SQL) no Distribuidor no banco de dados de distribuição. Especifique as credenciais do Windows sob as quais o Queue Reader Agent é executado para
@job_namee@job_password. Isso cria uma tarefa do Agente Leitor de Fila para o Distribuidor.Observação
Esta etapa só é necessária para publicações transacionais que suportam assinantes de atualização em fila.
(Opcional) Atualize a execução do sp_addpublication (Transact-SQL) para definir quaisquer valores não padrão para parâmetros que implementam novas funcionalidades de replicação.
Após sp_addpublication (Transact-SQL), execute sp_addpublication_snapshot (Transact-SQL) no Publisher no banco de dados de publicação. Especifique
@publicatione as credenciais do Windows sob as quais o Snapshot Agent é executado para@job_namee@job_password. Se o agente usar a Autenticação do SQL Server ao se conectar ao Editor, você também deverá especificar um valor de 0 para@publisher_security_modee as informações de logon do SQL Server para@publisher_logine@publisher_password. Isso cria um trabalho do Snapshot Agent para a publicação.(Opcional) Atualize a execução do sp_addarticle (Transact-SQL) para definir quaisquer valores não padrão para parâmetros que implementam novas funcionalidades de replicação.
Para atualizar scripts que adicionam assinaturas a um instantâneo ou publicação transacional
Depois de executar o procedimento armazenado que cria a assinatura, certifique-se de executar o procedimento armazenado que cria um trabalho do Distribution Agent para sincronizar a assinatura. O procedimento armazenado que você usa dependerá do tipo de assinatura.
Para uma assinatura pull, atualize a execução do sp_addpullsubscription_agent (Transact-SQL) para fornecer as credenciais do Windows sob as quais o Distribution Agent é executado no Subscritor durante
@job_namee@job_password. Isso é feito após a execução de sp_addpullsubscription. Para obter mais informações, consulte Criar uma assinatura de pull.Para uma subscrição push, execute sp_addpushsubscription_agent (Transact-SQL) no Publisher. Especifique
@subscriber,@subscriber_db,@publication, credenciais do Windows sob as quais o Agente de Distribuição é executado no Distribuidor para@job_namee@job_password, e um cronograma para esse trabalho de agente. Para obter mais informações, consulte Especificar agendas de sincronização. Isso é feito após a execução de sp_addsubscription. Para obter mais informações, consulte Criar uma assinatura push.
Para atualizar scripts que configuram uma publicação de mesclagem
(Opcional) No script existente, atualize a execução de sp_addmergepublication (Transact-SQL) para definir quaisquer valores não padrão para parâmetros que implementam novas funcionalidades de replicação.
Após sp_addmergepublication (Transact-SQL), execute sp_addpublication_snapshot (Transact-SQL) no Publisher no banco de dados de publicação. Especifique
@publicatione as credenciais do Windows sob as quais o Snapshot Agent é executado para@job_namee@job_password. Se o agente usar a Autenticação do SQL Server ao se conectar ao Editor, você também deverá especificar um valor de 0 para@publisher_security_modee as informações de logon do SQL Server para@publisher_logine@publisher_password. Isso cria um trabalho do Snapshot Agent para a publicação.(Opcional) Atualize a execução do sp_addmergearticle (Transact-SQL) para definir quaisquer valores não padrão para parâmetros que implementam novas funcionalidades de replicação.
Para atualizar scripts que adicionam subscrições a uma publicação de mesclagem
Depois de executar o procedimento armazenado que cria a assinatura, certifique-se de executar o procedimento armazenado que cria um trabalho do Merge Agent para sincronizar a assinatura. O procedimento armazenado que você usa dependerá do tipo de assinatura.
Para uma assinatura pull, atualize a execução do sp_addmergepullsubscription_agent (Transact-SQL) para fornecer as credenciais do Windows sob as quais o Merge Agent é executado no Assinante para
@job_namee@job_password. Isso é feito após a execução de sp_addmergepullsubscription. Para obter mais informações, consulte Criar uma assinatura de pull.Para uma assinatura push, execute sp_addmergepushsubscription_agent (Transact-SQL) no Publisher. Especifique
@subscriber,@subscriber_db,@publication, as credenciais do Windows sob as quais o Merge Agent no Distribuidor é executado para@job_namee@job_password, e um cronograma para esse trabalho de agente. Para obter mais informações, consulte Especificar agendas de sincronização. Isso é feito após a execução de sp_addmergesubscription. Para obter mais informações, consulte Criar uma assinatura push.
Exemplos
Um. Script do SQL Server 2000 para criar uma publicação transacional
A seguir está um exemplo de um script do SQL Server 2000 (8.x) que cria uma publicação transacional para a tabela Product. Esta publicação suporta atualização imediata com atualização em fila como mecanismo de alternância de falha. Os parâmetros padrão foram removidos para facilitar a leitura.
USE [Northwind]
GO
DECLARE @publication AS sysname
DECLARE @publicationDB AS sysname
DECLARE @article AS sysname
SET @publication = N'NwdProductTran'
SET @publicationDB = N'Northwind'
SET @article = N'Products'
-- Enable the replication database.
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'publish',
@value = N'true'
-- Add the transactional publication.
EXEC sp_addpublication
@publication = @publication,
@sync_method = N'native',
@status = N'active',
@repl_freq = N'continuous',
@description = N'Transactional publication of Northwind.',
@allow_push = N'true',
@allow_pull = N'true',
@allow_sync_tran = N'true',
@autogen_sync_procs = N'true',
@allow_queued_tran = N'true'
-- Add a snapshot job.
EXEC sp_addpublication_snapshot
@publication = @publication
-- Add the transactional articles.
EXEC sp_addarticle
@publication = @publication,
@article = @article,
@source_owner = N'dbo',
@source_object = @article,
@destination_table = @article,
@type = N'logbased',
@schema_option = 0x00000000000080F3,
@ins_cmd = N'CALL sp_MSins_Products',
@del_cmd = N'XCALL sp_MSdel_Products',
@upd_cmd = N'XCALL sp_MSupd_Products',
@auto_identity_range = N'false'
GO
B. Script do SQL Server 2005 e posterior para criar uma publicação transacional
A seguir está um exemplo de atualização do script anterior, que cria uma publicação transacional, para ser executado com êxito para o SQL Server 2005 (9.x) e versões posteriores. Esta publicação suporta atualização imediata com atualização em fila como mecanismo de alternância de falha. Os padrões para novos parâmetros foram explicitamente declarados.
Observação
As credenciais do Windows são fornecidas em tempo de execução usando variáveis de script sqlcmd .
-- 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".
-- Execute at the Distributor.
USE [distribution]
DECLARE @login AS sysname;
DECLARE @password AS sysname;
-- Specify the Windows account to run the Queue Reader Agent.
SET @login = $(Login);
-- Pass the password at runtime.
SET @password = $(Password);
-- Execute sp_addqreader_agent to create the Queue Reader Agent job.
EXEC sp_addqreader_agent
@job_login = @login,
@job_password = @password;
GO
-- Execute at the Publisher.
USE [Northwind]
GO
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @publicationDB = N'Northwind';
SET @article = N'Products';
-- Specify the Windows account to run the Log Reader and Snapshot Agents.
SET @login = $(Login);
-- Pass the password at runtime.
SET @password = $(Password);
-- Enable the replication 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 use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
-- Add the transactional publication.
EXEC sp_addpublication
@publication = @publication,
@sync_method = N'native',
@repl_freq = N'continuous',
@status = N'active',
@description = N'Transactional publication of Northwind.',
@allow_push = N'true',
@allow_pull = N'true',
@allow_sync_tran = N'true',
@autogen_sync_procs = N'true',
@allow_queued_tran = N'true',
@replicate_ddl = 1,
@enabled_for_p2p = N'false';
-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password,
-- Explicitly specify the use of Windows Integrated Authentication (default)
-- when connecting to the Publisher.
@publisher_security_mode = 1;
-- Add a transactional article.
EXEC sp_addarticle
@publication = @publication,
@article = @article,
@source_owner = N'dbo',
@source_object = @article,
@destination_table = @article,
@type = N'logbased',
@schema_option = 0x00000000000080F3,
@ins_cmd = N'CALL sp_MSins_Products',
@del_cmd = N'XCALL sp_MSdel_Products',
@upd_cmd = N'XCALL sp_MSupd_Products',
@auto_identity_range = N'false',
@identityrangemanagementoption = N'manual',
@fire_triggers_on_snapshot = N'false';
GO
C. Script do SQL Server 2000 para criar uma publicação de mesclagem
A seguir está um exemplo de um script do SQL Server 2000 (8.x) que cria uma publicação de mesclagem para a tabela Customers. Os parâmetros padrão foram removidos para facilitar a leitura.
-- Enable the replication database.
USE [Northwind]
GO
DECLARE @publicationDB AS sysname
DECLARE @publication AS sysname
DECLARE @article AS sysname
SET @publicationDB = N'Northwind'
SET @publication = N'NwdCustomersMerge'
SET @article = N'Customers'
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'merge publish',
@value = N'true'
-- Add the merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of Northwind.',
@retention = 14,
@sync_mode = N'native',
@centralized_conflicts = N'true',
@dynamic_filters = N'false',
@keep_partition_changes = N'false'
EXEC sp_addpublication_snapshot
@publication = @publication
-- Add the merge articles.
EXEC sp_addmergearticle
@publication = @publication,
@article = @article,
@source_owner = N'dbo',
@source_object = @article,
@type = N'table',
@description = null,
@column_tracking = N'true',
@schema_option = 0x000000000000CFF1
GO
D. Script do SQL Server 2005 e posterior para criar uma publicação de mesclagem
A seguir está um exemplo do script anterior, que cria uma publicação de mesclagem, atualizada para ser executada com êxito para o SQL Server 2005 (9.x) e versões posteriores. Os padrões para novos parâmetros foram explicitamente declarados.
Observação
As credenciais do Windows são fornecidas em tempo de execução usando variáveis de script sqlcmd .
-- 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".
-- Enabling the replication database
-- Enable the replication database.
USE [Northwind]
GO
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'Northwind';
SET @publication = N'NwdCustomersMerge';
SET @article = N'Customers';
-- Specify the Windows account to run the Snapshot Agent.
SET @login = $(Login);
-- Supply the password at runtime.
SET @password = $(Password);
EXEC sp_replicationdboption
@dbname = @publicationDB,
@optname = N'merge publish',
@value = N'true';
-- Add the merge publication.
EXEC sp_addmergepublication
@publication = @publication,
@description = N'Merge publication of Northwind.',
@retention = 14,
@sync_mode = N'native',
@dynamic_filters = N'false',
@keep_partition_changes = N'false',
-- Only set to '90RTM' if all Subscribers are SQL Server 2005.
@publication_compatibility_level = N'90RTM',
@replicate_ddl = 1,
@allow_subscriber_initiated_snapshot = N'true',
@allow_web_synchronization = N'false',
@allow_partition_realignment = N'true',
@retention_period_unit = N'day',
@automatic_reinitialization_policy = 0,
@conflict_logging = N'both';
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
-- Add the merge article.
EXEC sp_addmergearticle
@publication = @publication,
@article = @article,
@source_owner = N'dbo',
@source_object = @article,
@type = N'table',
@description = null,
@column_tracking = N'true',
@schema_option = 0x0000000000034FD1,
@partition_options = 0,
@subscriber_upload_options = 0,
@identityrangemanagementoption = N'manual',
@delete_tracking = N'true',
@compensate_for_errors = N'false',
@stream_blob_columns = N'true';
GO
E. Script do SQL Server 2000 para criar uma assinatura por push para uma publicação transacional
A seguir está um exemplo de um script do SQL Server 2000 (8.x) que cria uma assinatura por push para uma publicação transacional. Os parâmetros padrão foram removidos para facilitar a leitura.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran'
SET @subscriber = N'MYSUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber
@subscriber = @subscriber
-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push'
GO
F. Script do SQL Server 2005 e posterior para criar uma assinatura por push para uma publicação transacional
A seguir está um exemplo do script anterior, que cria uma assinatura por push para uma publicação transacional, atualizada para ser executada com êxito para o SQL Server 2005 (9.x) e versões posteriores. Os padrões para novos parâmetros foram explicitamente declarados.
Observação
As credenciais do Windows são fornecidas em tempo de execução usando variáveis de script sqlcmd .
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login);
-- Supply the password at runtime.
SET @password = $(Password);
-- Add a push subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
-- Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = @login,
@job_password = @password;
GO
G. Script do SQL Server 2000 para criar uma assinatura push para uma publicação de mesclagem
A seguir está um exemplo de um script do SQL Server 2000 (8.x) que cria uma assinatura por push para uma publicação de mesclagem. Os parâmetros padrão foram removidos para facilitar a leitura.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge'
SET @subscriber = N'SUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber
@subscriber = @subscriber
-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@subscriber_type = N'local',
@sync_type = N'automatic'
GO
H. Script do SQL Server 2005 e versões posteriores para criar uma assinatura push para uma publicação de mesclagem
A seguir está um exemplo do script anterior, que cria uma assinatura por push para uma publicação de mesclagem, atualizada para ser executada com êxito para o SQL Server 2005 (9.x) e versões posteriores. Os padrões para novos parâmetros foram explicitamente declarados.
Observação
As credenciais do Windows são fornecidas em tempo de execução usando variáveis de script sqlcmd .
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login);
-- Supply the password at runtime.
SET @password = $(Password);
-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push';
-- Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = @login,
@job_password = @password;
GO
Eu. Script do SQL Server 2000 para criar uma assinatura pull para uma publicação transacional
A seguir está um exemplo de um script do SQL Server 2000 (8.x) que cria uma assinatura pull para uma publicação transacional. Os parâmetros padrão foram removidos para facilitar a leitura.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge'
SET @subscriber = N'SUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber
@subscriber = @subscriber
-- Add a push subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@subscriber_type = N'local',
@sync_type = N'automatic'
GO
J. Script para SQL Server 2005 e versões posteriores para criar uma assinatura pull para uma publicação transacional
A seguir está um exemplo do script anterior, que cria uma assinatura pull para uma publicação transacional, atualizada para ser executada com êxito para o SQL Server 2005 (9.x) e versões posteriores. Os padrões para novos parâmetros foram explicitamente declarados.
Observação
As credenciais do Windows são fornecidas em tempo de execução usando variáveis de script sqlcmd .
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
-- Execute at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdProductTran';
SET @publisher = $(Publisher);
SET @publicationDB = N'Northwind';
-- Specify the Windows account to run the Distribution Agent.
SET @login = $(Login);
-- Supply the password at runtime.
SET @password = $(Password);
-- At the subscription database, create a pull subscription
-- to a transactional publication.
USE [NorthwindReplica]
EXEC sp_addpullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB,
@subscription_type = N'pull';
-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@distributor = @publisher,
@job_login = @login,
@job_password = @password;
GO
-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdProductTran';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';
-- Add a pull subscription to a transactional publication.
USE [Northwind]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'pull';
GO
K. Script do SQL Server 2000 para criar uma assinatura pull para uma publicação de mesclagem
A seguir está um exemplo de um script do SQL Server 2000 (8.x) que cria uma assinatura pull para uma publicação de mesclagem. Os parâmetros padrão foram removidos para facilitar a leitura.
-- Execute at the Subscriber
DECLARE @publication AS sysname
DECLARE @publisher AS sysname
DECLARE @publicationDB AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge'
SET @publisher = N'PUBSERVER'
SET @publicationDB = N'Northwind'
SET @subscriber = N'SUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- At the subscription database, create a pull subscription
-- to a merge publication.
USE [NorthwindReplica]
EXEC sp_addmergepullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB
-- Add an agent job to synchronize the pull subscription.
EXEC sp_addmergepullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@distributor = @publisher
GO
-- Execute at the Publisher.
DECLARE @publication AS sysname
DECLARE @subscriber AS sysname
DECLARE @subscriptionDB AS sysname
SET @publication = N'NwdCustomersMerge'
SET @subscriber = N'MYSUBSERVER'
SET @subscriptionDB = N'NorthwindReplica'
-- Add a Subscriber, using the defaults.
USE [master]
EXEC sp_addsubscriber
@subscriber = @subscriber
-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'pull',
@subscriber_type = N'local',
@sync_type = N'automatic'
GO
L. Script do SQL Server 2005 e versões posteriores para criar uma assinatura pull para uma publicação de mesclagem
A seguir está um exemplo do script anterior, que cria uma assinatura pull para uma publicação de mesclagem, atualizada para ser executada com êxito para o SQL Server 2005 (9.x) e versões posteriores. Os padrões para novos parâmetros foram explicitamente declarados.
Observação
As credenciais do Windows são fornecidas em tempo de execução usando variáveis de script sqlcmd .
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables
-- on the command line and in SQL Server Management Studio, see the
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".
-- Execute at the Subscriber
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @publisher = $(Publisher);
SET @publicationDB = N'Northwind';
-- Specify the Windows account to run the Merge Agent.
SET @login = $(Login);
-- Pass the password at runtime.
SET @password = $(Password);
-- At the subscription database, create a pull subscription
-- to a merge publication.
USE [NorthwindReplica]
EXEC sp_addmergepullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB;
-- Add an agent job to synchronize the pull subscription.
EXEC sp_addmergepullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@distributor = @publisher,
@job_login = @login,
@job_password = @password;
GO
-- Execute at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'NwdCustomersMerge';
SET @subscriber = $(Subscriber);
SET @subscriptionDB = N'NorthwindReplica';
-- Add a pull subscription to a merge publication.
USE [Northwind]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'pull',
@subscriber_type = N'local',
@sync_type = N'automatic';
GO
Conteúdo relacionado
- Criar uma publicação
- Criar uma assinatura push
- Criar uma Pull Subscription
- Exibir e modificar configurações de segurança de replicação
- MSSQL_ENG021797
- MSSQL_ENG021798
- Conceitos de procedimentos armazenados do sistema de replicação
- Atualizar bancos de dados replicados