Vorgehensweise: Erstellen eines Pullabonnements (Replikationsprogrammierung mit Transact-SQL)
Pullabonnements können mithilfe von gespeicherten Replikationsprozeduren programmgesteuert erstellt werden. Die verwendeten gespeicherten Prozeduren hängen vom Publikationstyp ab, zu dem das Abonnement gehört.
So erstellen Sie ein Pullabonnement für eine Snapshot- oder Transaktionspublikation
Führen Sie sp_helppublication (Transact-SQL) aus, um auf dem Verleger zu überprüfen, ob die Publikation Pullabonnements unterstützt.
- Wenn allow_pull im Resultset den Wert 1 aufweist, werden von der Publikation Pullabonnements unterstützt.
- Wenn allow_pull den Wert 0 aufweist, führen Sie sp_changepublication (Transact-SQL) aus, und geben Sie allow_pull für @property und true für @value an.
Führen Sie auf dem Abonnenten sp_addpullsubscription (Transact-SQL) aus. Geben Sie @publisher und @publication an. Informationen zum Aktualisieren von Abonnements finden Sie unter How to: Create an Updatable Subscription to a Transactional Publication (Replication Transact-SQL Programming).
Führen Sie auf dem Abonnenten sp_addpullsubscription_agent (Transact-SQL) aus. Geben Sie Folgendes an:
- Die Parameter @publisher, @publisher_db und @publication.
- Die Microsoft Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent auf dem Abonnenten für @job_login und @job_password ausgeführt wird.
Hinweis: Für Verbindungen, die mit der integrierten Windows-Authentifizierung hergestellt werden, werden immer die mit @job_login und @job_password angegebenen Windows-Anmeldeinformationen verwendet. Der Verteilungs-Agent stellt die lokale Verbindung mit dem Abonnenten immer mithilfe der integrierten Windows-Authentifizierung her. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Verteiler her. - (Optional) Den Wert 0 für @distributor_security_mode und die Microsoft SQL Server-Anmeldeinformationen für @distributor_login und @distributor_password, falls Sie beim Herstellen einer Verbindung mit dem Verteiler die SQL-Authentifizierung verwenden müssen.
- Einen Zeitplan für den Verteilungs-Agent-Auftrag für dieses Abonnement. Weitere Informationen finden Sie unter How to: Specify Synchronization Schedules (Replication Transact-SQL Programming).
Führen Sie auf dem Verleger sp_addsubscription (Transact-SQL) aus, um das Pullabonnement zu registrieren. Geben Sie @publication, @subscriber und @destination_db an. Geben Sie den Wert pull für @subscription_type an.
So erstellen Sie ein Pullabonnement für eine Mergepublikation
Führen Sie sp_helpmergepublication (Transact-SQL) aus, um auf dem Verleger zu überprüfen, ob die Publikation Pullabonnements unterstützt.
- Wenn allow_pull im Resultset den Wert 1 aufweist, werden von der Publikation Pullabonnements unterstützt.
- Wenn allow_pull den Wert 0 aufweist, führen Sie sp_changemergepublication (Transact-SQL) aus, und geben Sie allow_pull für @property und true für @value an.
Führen Sie auf dem Abonnenten sp_addmergepullsubscription (Transact-SQL) aus. Geben Sie @publisher, @publisher_db, @publication und die folgenden Parameter an:
- @subscriber_type – geben Sie local für ein Clientabonnement und global für ein Serverabonnement an.
- @subscription_priority – geben Sie eine Priorität für das Abonnement an (0,00 bis 99,99). Dies ist nur für ein Serverabonnement erforderlich.
Weitere Informationen finden Sie unter Erweiterte Konflikterkennung und -lösung bei der Mergereplikation.
Führen Sie auf dem Abonnenten sp_addmergepullsubscription_agent (Transact-SQL) aus. Geben Sie die folgenden Parameter an:
- @publisher, @publisher_db und @publication.
- Die Windows-Anmeldeinformationen, unter denen der Merge-Agent auf dem Abonnenten für @job_login und @job_password ausgeführt wird.
Hinweis: Für Verbindungen, die mit der integrierten Windows-Authentifizierung hergestellt werden, werden immer die mit @job_login und @job_password angegebenen Windows-Anmeldeinformationen verwendet. Der Merge-Agent stellt die lokale Verbindung mit dem Abonnenten immer mithilfe der integrierten Windows-Authentifizierung her. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Verteiler und dem Verleger her. - (Optional) Den Wert 0 für @distributor_security_mode und die SQL Server-Anmeldeinformationen für @distributor_login und @distributor_password, falls Sie beim Herstellen einer Verbindung mit dem Verteiler die SQL-Authentifizierung verwenden müssen.
- (Optional) Den Wert 0 für @publisher_security_mode und die SQL Server-Anmeldeinformationen für @publisher_login und @publisher_password, falls Sie beim Herstellen einer Verbindung mit dem Verleger die SQL-Authentifizierung verwenden müssen.
- Einen Zeitplan für den Merge-Agent-Auftrag für dieses Abonnement. Weitere Informationen finden Sie unter How to: Specify Synchronization Schedules (Replication Transact-SQL Programming).
Führen Sie auf dem Verleger sp_addmergesubscription (Transact-SQL) aus. Geben Sie @publication, @subscriber, @subscriber_db und den Wert pull für @subscription_type an. Hiermit wird das Pullabonnement registriert.
Beispiel
Das folgende Beispiel erstellt ein Pullabonnement für eine Transaktionspublikation. Der erste Batch wird auf dem Abonnenten und der zweite Batch auf dem Verleger ausgeführt. Die Werte für den Anmeldenamen und das Kennwort werden zur Laufzeit mithilfe von sqlcmd-Skriptvariablen bereitgestellt.
-- 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 this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';
-- At the subscription database, create a pull subscription
-- to a transactional publication.
USE [AdventureWorksReplica]
EXEC sp_addpullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB;
-- 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
-- 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 this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
-- At the Publisher, register the subscription, using the defaults.
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'pull',
@status = N'subscribed';
GO
Das folgende Beispiel erstellt ein Pullabonnement für eine Mergepublikation. Der erste Batch wird auf dem Abonnenten und der zweite Batch auf dem Verleger ausgeführt. Die Werte für den Anmeldenamen und das Kennwort werden zur Laufzeit mithilfe von sqlcmd-Skriptvariablen bereitgestellt.
-- 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 this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';
SET @hostname = N'adventure-works\david8';
-- At the subscription database, create a pull subscription
-- to a merge publication.
USE [AdventureWorksReplica]
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),
@hostname = @hostname;
GO
-- Execute this batch at the Publisher.
DECLARE @myMergePub AS sysname;
DECLARE @mySub AS sysname;
DECLARE @mySubDB AS sysname;
SET @myMergePub = N'AdvWorksSalesOrdersMerge';
SET @mySub = N'MYSUBSERVER';
SET @mySubDB = N'AdventureWorksReplica';
-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks]
EXEC sp_addmergesubscription @publication = @myMergePub,
@subscriber = @mySub, @subscriber_db = @mySubDB,
@subscription_type = N'pull';
GO
Siehe auch
Aufgaben
Vorgehensweise: Erstellen eines Pullabonnements (RMO-Programmierung)
Vorgehensweise: Erstellen eines Pushabonnements (Replikationsprogrammierung mit Transact-SQL)
Andere Ressourcen
How to: Create a Publication (Replication Transact-SQL Programming)
How to: Delete a Pull Subscription (Replication Transact-SQL Programming)
Abonnieren von Publikationen
Verwenden von sqlcmd mit Skriptvariablen