Vorgehensweise: Erstellen eines Pushabonnements (Replikationsprogrammierung mit Transact-SQL)

Pushabonnements können mithilfe von gespeicherten Replikationsprozeduren programmgesteuert erstellt werden. Die verwendeten gespeicherten Prozeduren hängen vom Publikationstyp ab, zu dem das Abonnement gehört.

ms146912.security(de-de,SQL.90).gifSicherheitshinweis:
Die Benutzer sollten nach Möglichkeit während der Laufzeit zur Eingabe von Anmeldeinformationen aufgefordert werden. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, muss die Datei an einem sicheren Ort gespeichert werden, um nicht autorisierten Zugriff zu verhindern.

So erstellen Sie ein Pushabonnement für eine Snapshot- oder Transaktionspublikation

  1. Überprüfen Sie auf dem Verleger der Publikationsdatenbank, ob die Publikation Pushabonnements durch Ausführen von sp_helppublication unterstützt.

    • Wenn allow_push den Wert 1 aufweist, werden Pushabonnements unterstützt.
    • Wenn allow_push den Wert 0 aufweist, führen Sie sp_changepublication aus, geben Sie allow_push für @property und true für @value an.
  2. Führen Sie auf dem Verleger in der Publikationsdatenbank sp_addsubscription aus. Geben Sie @publication, @subscriber und @destination_db an. Geben Sie den Wert push für @subscription_type an. Weitere Informationen zum Aktualisieren von Abonnements finden Sie unter How to: Create an Updatable Subscription to a Transactional Publication (Replication Transact-SQL Programming).

  3. Führen Sie auf dem Verleger in der Publikationsdatenbank sp_addpushsubscription_agent aus. Geben Sie Folgendes an:

    • Die Parameter @subscriber, @subscriber_db und @publication.
    • Die Microsoft Windows-Anmeldeinformationen, unter denen der Verteilungs-Agent auf dem Verteiler für @job_login und @job_password ausgeführt wird.
      ms146912.note(de-de,SQL.90).gifHinweis:
      Für Verbindungen, die mit der integrierten Windows-Authentifizierung hergestellt werden, werden immer die mit @job_login und @job_password angegebenen Windows-Anmeldeinformationen verwendet. Vom Verteilungs-Agent wird die lokale Verbindung mit dem Verteiler immer mithilfe der integrierten Windows-Authentifizierung hergestellt. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Abonnenten her.
    • (Optional) Einen Wert 0 für @subscriber_security_mode und die Microsoft SQL Server-Anmeldeinformationen für @subscriber_login und @subscriber_password. Geben Sie diese Parameter an, falls Sie beim Herstellen einer Verbindung mit dem Abonnenten die SQL Server-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).
    ms146912.security(de-de,SQL.90).gifSicherheitshinweis:
    Beim Erstellen eines Pushabonnements auf einem Verleger mit einem Remoteverteiler werden die angegebenen Werte für alle Parameter, einschließlich job_login und job_password, an den Verteiler als Nur-Text gesendet. Sie sollten die Verbindung zwischen dem Verleger und seinem Remoteverteiler verschlüsseln, bevor die gespeicherte Prozedur ausgeführt wird. Weitere Informationen finden Sie unter Verschlüsseln von Verbindungen zu SQL Server.

So erstellen Sie ein Pushabonnement für eine Mergepublikation

  1. Überprüfen Sie auf dem Verleger in der Publikationsdatenbank, ob die Publikation Pushabonnements durch Ausführen von p_helpmergepublication unterstützt.

    • Wenn allow_push den Wert 1 aufweist, werden Pushabonnements von der Publikation unterstützt.
    • Wenn allow_push nicht den Wert 1 aufweist, führen Sie sp_changemergepublication aus, geben Sie allow_push für @property und true für @value an.
  2. Führen Sie auf dem Verleger in der Datenbank sp_addmergesubscription aus, und geben Sie die folgenden Parameter an:

    • @publication. Dies ist der Name der Publikation.
    • @subscriber_type. Geben Sie für ein Clientabonnement local und für ein Serverabonnement global an.
    • @subscription_priority. Geben Sie für ein Serverabonnement eine Priorität für das Abonnement an (0,00 bis 99,99).
      Weitere Informationen finden Sie unter Erweiterte Konflikterkennung und -lösung bei der Mergereplikation.
  3. Führen Sie auf dem Verleger in der Publikationsdatenbank sp_addmergepushsubscription_agent aus. Geben Sie Folgendes an:

    • Die Parameter @subscriber, @subscriber_db und @publication.
    • Die Windows-Anmeldeinformationen, unter denen der Merge-Agent auf dem Verteiler für @job_login und @job_password ausgeführt wird.
      ms146912.note(de-de,SQL.90).gifHinweis:
      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 Verteiler immer mithilfe der integrierten Windows-Authentifizierung her. Standardmäßig stellt der Agent mithilfe der integrierten Windows-Authentifizierung eine Verbindung mit dem Abonnenten her.
    • (Optional) Den Wert 0 für @subscriber_security_mode und die SQL Server-Anmeldeinformationen für @subscriber_login und @subscriber_password. Geben Sie diese Parameter an, falls Sie beim Herstellen einer Verbindung mit dem Abonnenten die SQL Server-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. Geben Sie diese Werte an, falls Sie beim Herstellen einer Verbindung mit dem Verleger die SQL Server-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).
    ms146912.security(de-de,SQL.90).gifSicherheitshinweis:
    Beim Erstellen eines Pushabonnements auf einem Verleger mit einem Remoteverteiler werden die angegebenen Werte für alle Parameter, einschließlich job_login und job_password, an den Verteiler als Nur-Text gesendet. Sie sollten die Verbindung zwischen dem Verleger und seinem Remoteverteiler verschlüsseln, bevor die gespeicherte Prozedur ausgeführt wird. Weitere Informationen finden Sie unter Verschlüsseln von Verbindungen zu SQL Server.

Beispiel

Im folgenden Beispiel wird ein Pushabonnement für eine Transaktionspublikation erstellt. 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".

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';

--Add a push subscription to a transactional publication.
USE [AdventureWorks]
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

Im folgenden Beispiel wird ein Pushabonnement für eine Mergepublikation erstellt. 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".

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks]
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

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

Siehe auch

Aufgaben

Vorgehensweise: Erstellen eines Pullabonnements (Replikationsprogrammierung mit Transact-SQL)
Vorgehensweise: Erstellen eines Pushabonnements (RMO-Programmierung)

Andere Ressourcen

Abonnieren von Publikationen
Verwenden von sqlcmd mit Skriptvariablen

Hilfe und Informationen

Informationsquellen für SQL Server 2005