Aggiornamento di script di replica (programmazione Transact-SQL della replica)Upgrade Replication Scripts (Replication Transact-SQL Programming)

È possibile utilizzare i file script Transact-SQLTransact-SQL per configurare a livello di programmazione una topologia di replica. script files can be used to programmatically configure a replication topology. Per altre informazioni, vedere Concetti di base relativi alle stored procedure del sistema di replica.For more information, see Replication System Stored Procedures Concepts.

Importante

Sebbene non sia necessario aggiornare gli script eseguiti da membri del ruolo sysadmin , si consiglia di modificare gli script esistenti come descritto in questo argomento.Although you are not required to upgrade scripts that are executed by members of the sysadmin role, we recommend that you modify existing scripts as described in this topic. Specificare un account con autorizzazioni minime per ogni agente di replica, come descritto nella sezione relativa alle autorizzazioni necessarie per gli agenti dell'argomento Replication Agent Security Model.Specify an account that has minimum permissions for each replication agent as described in the "Permissions Required By Agents" section of the topic Replication Agent Security Model.

Oltre a offrire un maggior controllo delle autorizzazioni, consentendo di specificare in modo esplicito gli account di MicrosoftMicrosoft Windows in cui vengono eseguiti i processi dell'agente di replica, questi miglioramenti apportati alla sicurezza influiscono sulle seguenti stored procedure negli script esistenti:These security improvements, which enable more control over permissions by allowing you to explicitly specify the MicrosoftMicrosoft Windows accounts under which replication agent jobs are executed, affect the following stored procedures in existing scripts:

  • sp_addpublication_snapshotsp_addpublication_snapshot:

    È necessario specificare le credenziali di Windows come @job_login e @job_password durante l'esecuzione di sp_addpublication_snapshot (Transact-SQL) per creare il processo in cui viene eseguito l'agente snapshot nel server di distribuzione.You should now supply the Windows credentials as @job_login and @job_password when executing sp_addpublication_snapshot (Transact-SQL) to create the job under which the Snapshot Agent runs at the Distributor.

  • sp_addpushsubscription_agentsp_addpushsubscription_agent:

    È ora necessario eseguire sp_addpushsubscription_agent (Transact-SQL) per aggiungere in modo esplicito un processo e specificare le credenziali di Windows (@job_login e @job_password) usate per l'esecuzione del processo dell'agente di distribuzione nel server di distribuzione.You should now execute sp_addpushsubscription_agent (Transact-SQL) to explicitly add a job and supply the Windows credentials (@job_login and @job_password) under which the Distribution Agent job runs at the Distributor. Nelle versioni di SQL ServerSQL Server precedenti a SQL Server 2005SQL Server 2005tale operazione viene eseguita automaticamente al momento della creazione di una sottoscrizione push.In versions of SQL ServerSQL Server before SQL Server 2005SQL Server 2005, this was done automatically when a push subscription was created.

  • sp_addmergepushsubscription_agentsp_addmergepushsubscription_agent:

    È ora necessario eseguire sp_addmergepushsubscription_agent (Transact-SQL) per aggiungere in modo esplicito un processo e specificare le credenziali di Windows (@job_login e @job_password) usate per l'esecuzione del processo dell'agente di merge nel database di distribuzione.You should now execute sp_addmergepushsubscription_agent (Transact-SQL) to explicitly add a job and supply the Windows credentials (@job_login and @job_password) under which the Merge Agent job runs at the Distributor. Nelle versioni di SQL ServerSQL Server precedenti a SQL Server 2005SQL Server 2005tale operazione viene eseguita automaticamente al momento della creazione di una sottoscrizione push.In versions of SQL ServerSQL Server before SQL Server 2005SQL Server 2005, this was done automatically when a push subscription was created.

  • sp_addpullsubscription_agentsp_addpullsubscription_agent:

    È ora necessario specificare le credenziali di Windows come @job_login e @job_password durante l'esecuzione di sp_addpullsubscription_agent (Transact-SQL) per creare il processo in cui viene eseguito l'agente di distribuzione nel Sottoscrittore.You should now supply the Windows credentials as @job_login and @job_password when executing sp_addpullsubscription_agent (Transact-SQL) to create the job under which the Distribution Agent runs at the Subscriber.

  • sp_addmergepullsubscription_agentsp_addmergepullsubscription_agent:

    È ora necessario specificare le credenziali di Windows come @job_login e @job_password durante l'esecuzione di sp_addmergepullsubscription_agent (Transact-SQL) per creare il processo in cui viene eseguito l'agente di merge nel Sottoscrittore.You should now supply the Windows credentials as @job_login and @job_password when executing sp_addmergepullsubscription_agent (Transact-SQL) to create the job under which the Merge Agent runs at the Subscriber.

  • sp_addlogreader_agentsp_addlogreader_agent:

    È ora necessario eseguire sp_addlogreader_agent (Transact-SQL) per aggiungere in modo manuale il processo e specificare le credenziali di Windows usate per l'esecuzione dell'agente di lettura log nel server di distribuzione.You should now execute sp_addlogreader_agent (Transact-SQL) to manually add the job and supply the Windows credentials under which the Log Reader Agent runs at the Distributor. Nelle versioni di SQL ServerSQL Server precedenti a SQL Server 2005SQL Server 2005tale operazione viene eseguita automaticamente al momento della creazione di una pubblicazione transazionale.In versions of SQL ServerSQL Server before SQL Server 2005SQL Server 2005, this was done automatically when a transactional publication was created.

  • sp_addqreader_agentsp_addqreader_agent:

    È ora necessario eseguire sp_addqreader_agent (Transact-SQL) per aggiungere in modo manuale il processo e specificare le credenziali di Windows usate per l'esecuzione dell'agente di lettura coda nel server di distribuzione.You should now execute sp_addqreader_agent (Transact-SQL) to manually add the job and supply the Windows credentials under which the Queue Reader Agent runs at the Distributor. Nelle versioni di SQL ServerSQL Server precedenti a SQL Server 2005SQL Server 2005tale operazione viene eseguita automaticamente al momento della creazione di una pubblicazione transazionale con supporto dell'aggiornamento in coda.In versions of SQL ServerSQL Server before SQL Server 2005SQL Server 2005, this was done automatically when a transactional publication that supported queued updating was created.

    Nel modello di sicurezza introdotto in SQL Server 2005SQL Server 2005gli agenti di replica stabiliscono sempre le connessioni all'istanza locale di SQL ServerSQL Server con l'autenticazione di Windows, utilizzando le credenziali specificate in @job_name e @job_password.In the security model introduced in SQL Server 2005SQL Server 2005, replication agents always make connections to the local instance of SQL ServerSQL Server with Windows Authentication using the credentials supplied in @job_name and @job_password. Per informazioni sui requisiti degli account di Windows utilizzati quando si eseguono processi dell'agente di replica, vedere Replication Agent Security Model.For information about the requirements of Windows accounts used when running replication agent jobs, see Replication Agent Security Model.

Importante

Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza in fase di esecuzione.When possible, prompt users to enter security credentials at runtime. Se si archiviano le credenziali in un file script, assicurarsi che quest'ultimo sia protetto.If you store credentials in a script file, ensure that the file itself is secured.

Per aggiornare gli script di configurazione di una pubblicazione snapshot o transazionaleTo upgrade scripts that configure a snapshot or transactional publication

  1. Nello script esistente, prima di sp_addpublication (Transact-SQL), eseguire sp_addlogreader_agent (Transact-SQL) nel server di pubblicazione nel database di pubblicazione.In the existing script, before sp_addpublication (Transact-SQL), execute sp_addlogreader_agent (Transact-SQL) at the Publisher on the publication database. Specificare le credenziali di Windows utilizzate per l'esecuzione dell'agente di lettura log per @job_name e @job_password.Specify the Windows credentials under which the Log Reader Agent runs for @job_name and @job_password. Se l'agente utilizza l'autenticazione di SQL ServerSQL Server per la connessione al server di pubblicazione, è inoltre necessario specificare il valore 0 per @publisher_security_mode e le informazioni sull'account di accesso di SQL ServerSQL Server per @publisher_login e @publisher_password.If the agent will use SQL ServerSQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @publisher_security_mode and the SQL ServerSQL Server login information for @publisher_login and @publisher_password. Verrà creato un processo dell'agente di lettura log per il database di pubblicazione.This creates a Log Reader Agent job for the publication database.

    Nota

    Questo passaggio è necessario solo per le pubblicazioni transazionali, non per le pubblicazioni snapshot.This step is only for transactional publications and is not required for snapshot publications.

  2. (Facoltativo) Prima di sp_addpublication (Transact-SQL), eseguire sp_addqreader_agent (Transact-SQL) nel server di distribuzione nel database di distribuzione.(Optional) Before sp_addpublication (Transact-SQL), execute sp_addqreader_agent (Transact-SQL) at the Distributor on the distribution database. Specificare le credenziali di Windows utilizzate per l'esecuzione dell'agente di lettura coda per @job_name e @job_password.Specify the Windows credentials under which the Queue Reader Agent runs for @job_name and @job_password. Verrà creato un processo dell'agente di lettura coda per il server di distribuzione.This creates a Queue Reader Agent job for the Distributor.

    Nota

    Questo passaggio è necessario solo per le pubblicazioni transazionali che supportano Sottoscrittori ad aggiornamento in coda.This step is only required for transactional publications that support queued updating subscribers.

  3. (Facoltativo) Aggiornare l'esecuzione di sp_addpublication (Transact-SQL) per impostare eventuali valori non predefiniti per i parametri che implementano nuove funzionalità di replica.(Optional) Update the execution of sp_addpublication (Transact-SQL) to set any non-default values for parameters that implement new replication functionalities.

  4. Dopo sp_addpublication (Transact-SQL), eseguire sp_addpublication_snapshot (Transact-SQL) nel server di pubblicazione nel database di pubblicazione.After sp_addpublication (Transact-SQL), execute sp_addpublication_snapshot (Transact-SQL) at the Publisher on the publication database. Specificare @publication e le credenziali di Windows utilizzate per l'esecuzione dell'agente snapshot per @job_name e @job_password.Specify @publication and the Windows credentials under which the Snapshot Agent runs for @job_name and @job_password. Se l'agente utilizza l'autenticazione di SQL ServerSQL Server per la connessione al server di pubblicazione, è inoltre necessario specificare il valore 0 per @publisher_security_mode e le informazioni sull'account di accesso di SQL ServerSQL Server per @publisher_login e @publisher_password.If the agent will use SQL ServerSQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @publisher_security_mode and the SQL ServerSQL Server login information for @publisher_login and @publisher_password. Verrà creato un processo dell'agente snapshot per la pubblicazione.This creates a Snapshot Agent job for the publication.

  5. (Facoltativo) Aggiornare l'esecuzione di sp_addarticle (Transact-SQL) per impostare eventuali valori non predefiniti per i parametri che implementano nuove funzionalità di replica.(Optional) Update the execution of sp_addarticle (Transact-SQL) to set any non-default values for parameters that implement new replication functionalities.

Per aggiornare gli script per l'aggiunta di sottoscrizioni di una pubblicazione snapshot o transazionaleTo upgrade scripts that add subscriptions to a snapshot or transactional publication

  1. Dopo avere eseguito la stored procedure di creazione della sottoscrizione, assicurarsi di eseguire la stored procedure di creazione di un processo dell'agente di distribuzione per sincronizzare la sottoscrizione.After executing the stored procedure that creates the subscription, ensure that you execute the stored procedure that creates a Distribution Agent job to synchronize the subscription. La stored procedure utilizzata varia in base al tipo di sottoscrizione.The stored procedure that you use will depend on the type of subscription.

Per aggiornare gli script di configurazione di una pubblicazione di tipo mergeTo upgrade scripts that configure a merge publication

  1. (Facoltativo) Nello script esistente aggiornare l'esecuzione di sp_addmergepublication (Transact-SQL) per impostare eventuali valori non predefiniti per i parametri che implementano nuove funzionalità di replica.(Optional) In the existing script, update the execution of sp_addmergepublication (Transact-SQL) to set any non-default values for parameters that implement new replication functionalities.

  2. Dopo sp_addmergepublication (Transact-SQL), eseguire sp_addpublication_snapshot (Transact-SQL) nel server di pubblicazione nel database di pubblicazione.After sp_addmergepublication (Transact-SQL), execute sp_addpublication_snapshot (Transact-SQL) at the Publisher on the publication database. Specificare @publication e le credenziali di Windows utilizzate per l'esecuzione dell'agente snapshot per @job_name e @job_password.Specify @publication and the Windows credentials under which the Snapshot Agent runs for @job_name and @job_password. Se l'agente utilizza l'autenticazione di SQL ServerSQL Server per la connessione al server di pubblicazione, è inoltre necessario specificare il valore 0 per @publisher_security_mode e le informazioni sull'account di accesso di SQL ServerSQL Server per @publisher_login e @publisher_password.If the agent will use SQL ServerSQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @publisher_security_mode and the SQL ServerSQL Server login information for @publisher_login and @publisher_password. Verrà creato un processo dell'agente snapshot per la pubblicazione.This creates a Snapshot Agent job for the publication.

  3. (Facoltativo) Aggiornare l'esecuzione di sp_addmergearticle (Transact-SQL) per impostare eventuali valori non predefiniti per i parametri che implementano nuove funzionalità di replica.(Optional) Update the execution of sp_addmergearticle (Transact-SQL) to set any non-default values for parameters that implement new replication functionalities.

Per aggiornare gli script per l'aggiunta di sottoscrizioni di una pubblicazione di tipo mergeTo upgrade scripts that add subscriptions to a merge publication

  1. Dopo avere eseguito la stored procedure di creazione della sottoscrizione, assicurarsi di eseguire la stored procedure di creazione di un processo dell'agente di merge per sincronizzare la sottoscrizione.After executing the stored procedure that creates the subscription, ensure that you execute the stored procedure that creates a Merge Agent job to synchronize the subscription. La stored procedure utilizzata varia in base al tipo di sottoscrizione.The stored procedure that you use will depend on the type of subscription.

EsempioExample

Di seguito è riportato un esempio di uno script SQL Server 2000SQL Server 2000 per la creazione di una pubblicazione transazionale per la tabella Product.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a transactional publication for the Product table. Questa pubblicazione supporta l'aggiornamento immediato sostituito dall'aggiornamento in coda come soluzione di failover.This publication supports immediate updating with queued updating as failover. I parametri predefiniti sono stati rimossi per una maggiore leggibilità.Default parameters have been removed for readability.

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

EsempioExample

Di seguito è riportato un esempio dello script precedente per la creazione di una pubblicazione transazionale, aggiornato in modo da essere eseguito correttamente in SQL Server 2005SQL Server 2005 e versioni successive.The following is an example of upgrading the previous script, which creates a transactional publication, to run successfully for SQL Server 2005SQL Server 2005 and later versions. Questa pubblicazione supporta l'aggiornamento immediato sostituito dall'aggiornamento in coda come soluzione di failover.This publication supports immediate updating with queued updating as failover. I valori predefiniti dei nuovi parametri sono stati dichiarati in modo esplicito.Defaults for new parameters have been explicitly declared.

Nota

Le credenziali di Windows vengono specificate in fase di esecuzione mediante variabili di scripting sqlcmd .Windows credentials are supplied at runtime using sqlcmd scripting variables.

-- 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

EsempioExample

Di seguito è riportato un esempio di uno script SQL Server 2000SQL Server 2000 per la creazione di una pubblicazione di tipo merge per la tabella Customers.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a merge publication for the Customers table. I parametri predefiniti sono stati rimossi per una maggiore leggibilità.Default parameters have been removed for readability.

-- 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

EsempioExample

Di seguito è riportato un esempio dello script precedente per la creazione di una pubblicazione di tipo merge, aggiornato in modo da essere eseguito correttamente in SQL Server 2005SQL Server 2005 e versioni successive.The following is an example of the previous script, which creates a merge publication, upgraded to run successfully for SQL Server 2005SQL Server 2005 and later versions. I valori predefiniti dei nuovi parametri sono stati dichiarati in modo esplicito.Defaults for new parameters have been explicitly declared.

Nota

Le credenziali di Windows vengono specificate in fase di esecuzione mediante variabili di scripting sqlcmd .Windows credentials are supplied at runtime using sqlcmd scripting variables.

-- 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

EsempioExample

Di seguito è riportato un esempio di uno script SQL Server 2000SQL Server 2000 per la creazione di una sottoscrizione push di una pubblicazione transazionale.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a push subscription to a transactional publication. I parametri predefiniti sono stati rimossi per una maggiore leggibilità.Default parameters have been removed for readability.

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

EsempioExample

Di seguito è riportato un esempio dello script precedente per la creazione di una sottoscrizione push di una pubblicazione transazionale, aggiornato in modo da essere eseguito correttamente in SQL Server 2005SQL Server 2005 e versioni successive.The following is an example of the previous script, which creates a push subscription to a transactional publication, upgraded to run successfully for SQL Server 2005SQL Server 2005 and later versions. I valori predefiniti dei nuovi parametri sono stati dichiarati in modo esplicito.Defaults for new parameters have been explicitly declared.

Nota

Le credenziali di Windows vengono specificate in fase di esecuzione mediante variabili di scripting sqlcmd .Windows credentials are supplied at runtime using sqlcmd scripting variables.

-- 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

EsempioExample

Di seguito è riportato un esempio di uno script SQL Server 2000SQL Server 2000 per la creazione di una sottoscrizione push di una pubblicazione di tipo merge.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a push subscription to a merge publication. I parametri predefiniti sono stati rimossi per una maggiore leggibilità.Default parameters have been removed for readability.

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

EsempioExample

Di seguito è riportato un esempio dello script precedente per la creazione di una sottoscrizione push di una pubblicazione di tipo merge, aggiornato in modo da essere eseguito correttamente in SQL Server 2005SQL Server 2005 e versioni successive.The following is an example of the previous script, which creates a push subscription to a merge publication, upgraded to run successfully for SQL Server 2005SQL Server 2005 and later versions. I valori predefiniti dei nuovi parametri sono stati dichiarati in modo esplicito.Defaults for new parameters have been explicitly declared.

Nota

Le credenziali di Windows vengono specificate in fase di esecuzione mediante variabili di scripting sqlcmd .Windows credentials are supplied at runtime using sqlcmd scripting variables.

-- 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

EsempioExample

Di seguito è riportato un esempio di uno script SQL Server 2000SQL Server 2000 per la creazione di una sottoscrizione pull di una pubblicazione transazionale.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a pull subscription to a transactional publication. I parametri predefiniti sono stati rimossi per una maggiore leggibilità.Default parameters have been removed for readability.

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

EsempioExample

Di seguito è riportato un esempio dello script precedente per la creazione di una sottoscrizione pull di una pubblicazione transazionale, aggiornato in modo da essere eseguito correttamente in SQL Server 2005SQL Server 2005 e versioni successive.The following is an example of the previous script, which creates a pull subscription to a transactional publication, upgraded to run successfully for SQL Server 2005SQL Server 2005 and later versions. I valori predefiniti dei nuovi parametri sono stati dichiarati in modo esplicito.Defaults for new parameters have been explicitly declared.

Nota

Le credenziali di Windows vengono specificate in fase di esecuzione mediante variabili di scripting sqlcmd .Windows credentials are supplied at runtime using sqlcmd scripting variables.

-- 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

EsempioExample

Di seguito è riportato un esempio di uno script SQL Server 2000SQL Server 2000 per la creazione di una sottoscrizione pull di una pubblicazione di tipo merge.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a pull subscription to a merge publication. I parametri predefiniti sono stati rimossi per una maggiore leggibilità.Default parameters have been removed for readability.

-- 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

EsempioExample

Di seguito è riportato un esempio dello script precedente per la creazione di una sottoscrizione pull di una pubblicazione di tipo merge, aggiornato in modo da essere eseguito correttamente in SQL Server 2005SQL Server 2005 e versioni successive.The following is an example of the previous script, which creates a pull subscription to a merge publication, upgraded to run successfully for SQL Server 2005SQL Server 2005 and later versions. I valori predefiniti dei nuovi parametri sono stati dichiarati in modo esplicito.Defaults for new parameters have been explicitly declared.

Nota

Le credenziali di Windows vengono specificate in fase di esecuzione mediante variabili di scripting sqlcmd .Windows credentials are supplied at runtime using sqlcmd scripting variables.

-- 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

Vedere ancheSee Also

Create a Publication Create a Publication
Create a Push Subscription Create a Push Subscription
Create a Pull Subscription Create a Pull Subscription
Visualizzare e modificare le impostazioni di sicurezza della replica View and Modify Replication Security Settings
MSSQL_ENG021797 MSSQL_ENG021797
MSSQL_ENG021798 MSSQL_ENG021798
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
Aggiornare database replicati Upgrade Replicated Databases