Aktualisieren von Replikationsskripts (Replikationsprogrammierung mit Transact-SQL)Upgrade Replication Scripts (Replication Transact-SQL Programming)

Dieses Thema gilt für: JaSQL ServerkeineAzure SQL-DatenbankkeineAzure SQL Data Warehouse keine Parallel DatawarehouseTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse Mithilfe von Transact-SQLTransact-SQL-Skriptdateien kann eine Replikationstopologie programmgesteuert konfiguriert werden. Transact-SQLTransact-SQL script files can be used to programmatically configure a replication topology. Weitere Informationen finden Sie unter Replikationskonzepte für gespeicherte Systemprozeduren.For more information, see Replication System Stored Procedures Concepts.

Wichtig

Skripts, die von Mitgliedern der sysadmin -Rolle ausgeführt werden, müssen nicht aktualisiert werden. Dennoch empfiehlt es sich, vorhandene Skripts wie in diesem Thema beschrieben zu ändern.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. Geben Sie ein Konto mit Mindestberechtigungen für jeden Replikations-Agent an, wie im Abschnitt zu den für die Agents erforderlichen Berechtigungen im Thema Replication Agent Security Modelbeschrieben.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.

Diese Sicherheitsverbesserungen, die Ihnen mehr Kontrolle über Berechtigungen bieten, indem Sie explizit die MicrosoftMicrosoft Windows-Konten angeben können, unter denen Replikations-Agentaufträge ausgeführt werden, wirken sich auf die folgenden gespeicherten Prozeduren in vorhandenen Skripts aus: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_snapshot:sp_addpublication_snapshot:

    Sie sollten nun die Windows-Anmeldeinformationen in Form von @job_login und @job_password angeben, wenn Sie sp_addpublication_snapshot (Transact-SQL) ausführen, um den Auftrag zu erstellen, unter dem der Momentaufnahme-Agent auf dem Verteiler ausgeführt wird.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_agent:sp_addpushsubscription_agent:

    Sie sollten nun sp_addpushsubscription_agent (Transact-SQL) ausführen, um explizit einen Auftrag hinzuzufügen, und die Windows-Anmeldeinformationen (@job_login und @job_password) anzugeben, unter denen der Auftrag des Verteilungs-Agents auf dem Verteiler ausgeführt wird.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. In Versionen von SQL ServerSQL Server vor SQL Server 2005SQL Server 2005wurde dieser Vorgang automatisch beim Erstellen eines Pushabonnements ausgeführt.In versions of SQL ServerSQL Server before SQL Server 2005SQL Server 2005, this was done automatically when a push subscription was created.

  • sp_addmergepushsubscription_agent:sp_addmergepushsubscription_agent:

    Sie sollten nun sp_addmergepushsubscription_agent (Transact-SQL) ausführen, um explizit einen Auftrag hinzuzufügen, und die Windows-Anmeldeinformationen (@job_login und @job_password) angeben, unter denen der Auftrag des Merge-Agents auf dem Verteiler ausgeführt wird.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. In Versionen von SQL ServerSQL Server vor SQL Server 2005SQL Server 2005wurde dieser Vorgang automatisch beim Erstellen eines Pushabonnements ausgeführt.In versions of SQL ServerSQL Server before SQL Server 2005SQL Server 2005, this was done automatically when a push subscription was created.

  • sp_addpullsubscription_agent:sp_addpullsubscription_agent:

    Sie sollten nun die Windows-Anmeldeinformationen in Form von @job_login und @job_password angeben, wenn Sie sp_addpullsubscription_agent (Transact-SQL) ausführen, um den Auftrag zu erstellen, unter dem der Verteilungs-Agent auf dem Abonnenten ausgeführt wird.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_agent:sp_addmergepullsubscription_agent:

    Geben Sie nun die Windows-Anmeldeinformationen als @job_login und @job_password beim Ausführen von sp_addmergepullsubscription_agent (Transact-SQL) an, um den Auftrag zu erstellen, unter dem der Merge-Agent auf dem Abonnenten ausgeführt wird.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_agent:sp_addlogreader_agent:

    Sie sollten nun sp_addlogreader_agent (Transact-SQL) ausführen, um den Auftrag manuell hinzuzufügen, und die Windows-Anmeldeinformationen anzugeben, unter denen der Protokolllese-Agent auf dem Verteiler ausgeführt wird.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. In Versionen von SQL ServerSQL Server vor SQL Server 2005SQL Server 2005wurde dieser Vorgang automatisch beim Erstellen einer Transaktionsveröffentlichung ausgeführt.In versions of SQL ServerSQL Server before SQL Server 2005SQL Server 2005, this was done automatically when a transactional publication was created.

  • sp_addqreader_agent:sp_addqreader_agent:

    Sie sollten nun sp_addqreader_agent (Transact-SQL) ausführen, um den Auftrag manuell hinzuzufügen, und die Windows-Anmeldeinformationen anzugeben, unter denen der Warteschlangenlese-Agent auf dem Verteiler ausgeführt wird.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. In Versionen von SQL ServerSQL Server vor SQL Server 2005SQL Server 2005wurde dieser Vorgang automatisch beim Erstellen einer Transaktionsveröffentlichung mit Unterstützung des verzögerten Aktualisierens ausgeführt.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.

    In dem in SQL Server 2005SQL Server 2005eingeführten Sicherheitsmodell stellen Replikations-Agents Verbindungen mit der lokalen Instanz von SQL ServerSQL Server mit Windows-Authentifizierung immer mithilfe der in @job_name und @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. Informationen zu den Anforderungen für beim Ausführen von Replikations-Agentaufträgen verwendeten Windows-Konten finden Sie unter Replication Agent Security Model.For information about the requirements of Windows accounts used when running replication agent jobs, see Replication Agent Security Model.

Wichtig

Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Anmeldeinformationen zur Laufzeit anzugeben.When possible, prompt users to enter security credentials at runtime. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden, müssen Sie sicherstellen, dass die Datei geschützt ist.If you store credentials in a script file, ensure that the file itself is secured.

So aktualisieren Sie Skripts, mit denen eine Momentaufnahme- oder eine Transaktionsveröffentlichung konfiguriert werdenTo upgrade scripts that configure a snapshot or transactional publication

  1. Führen Sie im vorhandenen Skript sp_addlogreader_agent (Transact-SQL) vor sp_addpublication (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank aus.In the existing script, before sp_addpublication (Transact-SQL), execute sp_addlogreader_agent (Transact-SQL) at the Publisher on the publication database. Geben Sie die Windows-Anmeldeinformationen, unter denen der Protokolllese-Agent ausgeführt wird, für @job_name und @job_password.Specify the Windows credentials under which the Log Reader Agent runs for @job_name and @job_password. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL ServerSQL Server -Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die SQL ServerSQL Server -Anmeldeinformationen für @publisher_login und @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. Dadurch wird ein Auftrag des Protokolllese-Agents für die Veröffentlichungsdatenbank erstellt.This creates a Log Reader Agent job for the publication database.

    Hinweis

    Dieser Schritt muss nur bei Transaktionsveröffentlichungen, nicht bei Momentaufnahmeveröffentlichungen ausgeführt werden.This step is only for transactional publications and is not required for snapshot publications.

  2. (Optional) Führen Sie sp_addqreader_agent (Transact-SQL) vor sp_addpublication (Transact-SQL) auf dem Verteiler für die Verteilungsdatenbank aus.(Optional) Before sp_addpublication (Transact-SQL), execute sp_addqreader_agent (Transact-SQL) at the Distributor on the distribution database. Geben Sie die Windows-Anmeldeinformationen, unter denen der Warteschlangenlese-Agent ausgeführt wird, für @job_name und @job_password.Specify the Windows credentials under which the Queue Reader Agent runs for @job_name and @job_password. Dadurch wird ein Auftrag des Warteschlangenlese-Agents für den Verteiler erstellt.This creates a Queue Reader Agent job for the Distributor.

    Hinweis

    Dieser Schritt muss nur bei Transaktionsveröffentlichungen ausgeführt werden, die Abonnenten mit verzögertem Update über eine Warteschlange unterstützen.This step is only required for transactional publications that support queued updating subscribers.

  3. (Optional) Aktualisieren Sie die Ausführung von sp_addpublication (Transact-SQL), um alle Nichtstandardwerte für Parameter festzulegen, die neue Replikationsfunktionen implementieren.(Optional) Update the execution of sp_addpublication (Transact-SQL) to set any non-default values for parameters that implement new replication functionalities.

  4. Führen Sie nach sp_addpublication (Transact-SQL) sp_addpublication_snapshot (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank aus.After sp_addpublication (Transact-SQL), execute sp_addpublication_snapshot (Transact-SQL) at the Publisher on the publication database. Geben Sie @publication und die Windows-Anmeldeinformationen, unter denen der Momentaufnahme-Agent ausgeführt wird, für @job_name und @job_password.Specify @publication and the Windows credentials under which the Snapshot Agent runs for @job_name and @job_password. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL ServerSQL Server -Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die SQL ServerSQL Server -Anmeldeinformationen für @publisher_login und @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. Dadurch wird ein Auftrag des Momentaufnahme-Agents für die Veröffentlichung erstellt.This creates a Snapshot Agent job for the publication.

  5. (Optional) Aktualisieren Sie die Ausführung von sp_addarticle (Transact-SQL), um alle Nichtstandardwerte für Parameter festzulegen, die neue Replikationsfunktionen implementieren.(Optional) Update the execution of sp_addarticle (Transact-SQL) to set any non-default values for parameters that implement new replication functionalities.

So aktualisieren Sie Skripts, mit denen einer Momentaufnahme- oder Transaktionsveröffentlichung Abonnements hinzugefügt werdenTo upgrade scripts that add subscriptions to a snapshot or transactional publication

  1. Nach dem Ausführen der gespeicherten Prozedur, mit der das Abonnement erstellt wird, müssen Sie die gespeicherte Prozedur ausführen, mit der der Auftrag des Verteilungs-Agents erstellt wird, damit das Abonnement synchronisiert wird.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. Welche gespeicherte Prozedur Sie verwenden, hängt vom Typ des Abonnements ab.The stored procedure that you use will depend on the type of subscription.

So aktualisieren Sie Skripts, mit denen eine Mergeveröffentlichung konfiguriert wirdTo upgrade scripts that configure a merge publication

  1. (Optional) Aktualisieren Sie im vorhandenen Skript die Ausführung von sp_addmergepublication (Transact-SQL), um alle Nichtstandardwerte für Parameter festzulegen, die neue Replikationsfunktionen implementieren.(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. Führen Sie nach sp_addmergepublication (Transact-SQL) sp_addpublication_snapshot (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank aus.After sp_addmergepublication (Transact-SQL), execute sp_addpublication_snapshot (Transact-SQL) at the Publisher on the publication database. Geben Sie @publication und die Windows-Anmeldeinformationen, unter denen der Momentaufnahme-Agent ausgeführt wird, für @job_name und @job_password.Specify @publication and the Windows credentials under which the Snapshot Agent runs for @job_name and @job_password. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL ServerSQL Server -Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die SQL ServerSQL Server -Anmeldeinformationen für @publisher_login und @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. Dadurch wird ein Auftrag des Momentaufnahme-Agents für die Veröffentlichung erstellt.This creates a Snapshot Agent job for the publication.

  3. (Optional) Aktualisieren Sie die Ausführung von sp_addmergearticle (Transact-SQL), um alle Nichtstandardwerte für Parameter festzulegen, die neue Replikationsfunktionen implementieren.(Optional) Update the execution of sp_addmergearticle (Transact-SQL) to set any non-default values for parameters that implement new replication functionalities.

So aktualisieren Sie Skripts, mit denen einer Mergeveröffentlichung Abonnements hinzugefügt werdenTo upgrade scripts that add subscriptions to a merge publication

  1. Nach dem Ausführen der gespeicherten Prozedur, mit der das Abonnement erstellt wird, müssen Sie die gespeicherte Prozedur ausführen, mit der der Auftrag des Merge-Agents erstellt wird, damit das Abonnement synchronisiert wird.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. Welche gespeicherte Prozedur Sie verwenden, hängt vom Typ des Abonnements ab.The stored procedure that you use will depend on the type of subscription.

BeispielExample

Im folgenden Beispiel wird ein SQL Server 2000SQL Server 2000 -Skript dargestellt, mit dem eine Transaktionsveröffentlichung für die Product-Tabelle erstellt wird.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a transactional publication for the Product table. Diese Veröffentlichung unterstützt sofortige Updates mit Updates über eine Warteschlange als Failover.This publication supports immediate updating with queued updating as failover. Standardparameter wurden zwecks besserer Lesbarkeit entfernt.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

BeispielExample

Im folgenden Beispiel wird die Aktualisierung des vorherigen Skripts dargestellt, mit dem eine Transaktionsveröffentlichung erstellt wird, damit es unter SQL Server 2005SQL Server 2005 und späteren Versionen erfolgreich ausgeführt werden kann.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. Diese Veröffentlichung unterstützt sofortige Updates mit Updates über eine Warteschlange als Failover.This publication supports immediate updating with queued updating as failover. Standardwerte für neue Parameter wurden explizit deklariert.Defaults for new parameters have been explicitly declared.

Hinweis

Windows-Anmeldeinformationen werden zur Laufzeit mithilfe von sqlcmd -Skriptvariablen angegeben.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

BeispielExample

Im folgenden Beispiel wird ein SQL Server 2000SQL Server 2000 -Skript dargestellt, mit dem eine Mergeveröffentlichung für die Customers-Tabelle erstellt wird.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a merge publication for the Customers table. Standardparameter wurden zwecks besserer Lesbarkeit entfernt.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

BeispielExample

Im folgenden Beispiel wird das vorherige Skript dargestellt, mit dem eine Mergeveröffentlichung erstellt wird und das aktualisiert wurde, damit es unter SQL Server 2005SQL Server 2005 und späteren Versionen erfolgreich ausgeführt werden kann.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. Standardwerte für neue Parameter wurden explizit deklariert.Defaults for new parameters have been explicitly declared.

Hinweis

Windows-Anmeldeinformationen werden zur Laufzeit mithilfe von sqlcmd -Skriptvariablen angegeben.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

BeispielExample

Im folgenden Beispiel wird ein SQL Server 2000SQL Server 2000 -Skript dargestellt, mit dem ein Pushabonnement für eine Transaktionsveröffentlichung erstellt wird.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a push subscription to a transactional publication. Standardparameter wurden zwecks besserer Lesbarkeit entfernt.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

BeispielExample

Im folgenden Beispiel wird die Aktualisierung des vorherigen Skripts dargestellt, mit dem ein Pushabonnement für eine Transaktionsveröffentlichung erstellt wird und das aktualisiert wurde, damit es unter SQL Server 2005SQL Server 2005 und späteren Versionen erfolgreich ausgeführt werden kann.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. Standardwerte für neue Parameter wurden explizit deklariert.Defaults for new parameters have been explicitly declared.

Hinweis

Windows-Anmeldeinformationen werden zur Laufzeit mithilfe von sqlcmd -Skriptvariablen angegeben.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

BeispielExample

Im folgenden Beispiel wird ein SQL Server 2000SQL Server 2000 -Skript dargestellt, mit dem ein Pushabonnement für eine Mergeveröffentlichung erstellt wird.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a push subscription to a merge publication. Standardparameter wurden zwecks besserer Lesbarkeit entfernt.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

BeispielExample

Im folgenden Beispiel wird die Aktualisierung des vorherigen Skripts dargestellt, mit dem ein Pushabonnement für eine Mergeveröffentlichung erstellt wird und das aktualisiert wurde, damit es unter SQL Server 2005SQL Server 2005 und späteren Versionen erfolgreich ausgeführt werden kann.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. Standardwerte für neue Parameter wurden explizit deklariert.Defaults for new parameters have been explicitly declared.

Hinweis

Windows-Anmeldeinformationen werden zur Laufzeit mithilfe von sqlcmd -Skriptvariablen angegeben.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

BeispielExample

Im folgenden Beispiel wird ein SQL Server 2000SQL Server 2000 -Skript dargestellt, mit dem ein Pullabonnement für eine Transaktionsveröffentlichung erstellt wird.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a pull subscription to a transactional publication. Standardparameter wurden zwecks besserer Lesbarkeit entfernt.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

BeispielExample

Im folgenden Beispiel wird die Aktualisierung des vorherigen Skripts dargestellt, mit dem ein Pullabonnement für eine Transaktionsveröffentlichung erstellt wird und das aktualisiert wurde, damit es unter SQL Server 2005SQL Server 2005 und späteren Versionen erfolgreich ausgeführt werden kann.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. Standardwerte für neue Parameter wurden explizit deklariert.Defaults for new parameters have been explicitly declared.

Hinweis

Windows-Anmeldeinformationen werden zur Laufzeit mithilfe von sqlcmd -Skriptvariablen angegeben.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

BeispielExample

Im folgenden Beispiel wird ein SQL Server 2000SQL Server 2000 -Skript dargestellt, mit dem ein Pullabonnement für eine Mergeveröffentlichung erstellt wird.The following is an example of a SQL Server 2000SQL Server 2000 script that creates a pull subscription to a merge publication. Standardparameter wurden zwecks besserer Lesbarkeit entfernt.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

BeispielExample

Im folgenden Beispiel wird die Aktualisierung des vorherigen Skripts dargestellt, mit dem ein Pullabonnement für eine Mergeveröffentlichung erstellt wird und das aktualisiert wurde, damit es unter SQL Server 2005SQL Server 2005 und späteren Versionen erfolgreich ausgeführt werden kann.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. Standardwerte für neue Parameter wurden explizit deklariert.Defaults for new parameters have been explicitly declared.

Hinweis

Windows-Anmeldeinformationen werden zur Laufzeit mithilfe von sqlcmd -Skriptvariablen angegeben.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

Weitere Informationen finden Sie unterSee Also

Create a Publication Create a Publication
Create a Push Subscription Create a Push Subscription
Create a Pull Subscription Create a Pull Subscription
Anzeigen und Ändern von Replikationssicherheitseinstellungen View and Modify Replication Security Settings
MSSQL_ENG021797 MSSQL_ENG021797
MSSQL_ENG021798 MSSQL_ENG021798
Replication System Stored Procedures Concepts Replication System Stored Procedures Concepts
Aktualisieren von replizierten DatenbankenUpgrade Replicated Databases