Vorgehensweise: Erstellen einer Veröffentlichung (Replikationsprogrammierung mit Transact-SQL)

Veröffentlichungen können programmgesteuert mit gespeicherten Replikationsprozeduren erstellt werden. Welche gespeicherten Prozeduren Sie verwenden, hängt vom Typ der zu erstellenden Veröffentlichung ab.

SicherheitshinweisSicherheitshinweis

Verwenden Sie nach Möglichkeit die Windows-Authentifizierung. Benutzer sollten nach Möglichkeit dazu aufgefordert werden, Sicherheitsanmeldeinformationen zur Laufzeit einzugeben. Wenn Anmeldeinformationen in einer Skriptdatei gespeichert werden müssen, muss die Datei geschützt werden, um unberechtigte Zugriffe zu verhindern.

So erstellen Sie eine Snapshot- oder Transaktionsveröffentlichung

  1. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_replicationdboption (Transact-SQL) aus, um die Veröffentlichung der aktuellen Datenbank mit der Snapshot- oder der Transaktionsreplikation zu aktivieren.

  2. Bestimmen Sie bei einer Transaktionsveröffentlichung, ob ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank existiert. (Dieser Schritt ist für Snapshotveröffentlichungen nicht erforderlich.)

    • Wenn bereits ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank vorhanden ist, fahren Sie mit Schritt 3 fort.

    • Wenn Sie sich nicht sicher sind, ob ein Protokolllese-Agentauftrag für die Veröffentlichungsdatenbank vorhanden ist, führen Sie sp_helplogreader_agent (Transact-SQL) auf dem Verleger für die Veröffentlichungsdatenbank aus.

    • Wenn das Resultset leer ist, erstellen Sie einen Protokolllese-Agentauftrag. Führen Sie auf dem Verleger sp_addlogreader_agent (Transact-SQL) aus. Geben Sie die Microsoft Windows-Anmeldeinformationen, unter denen der Agent ausgeführt wird, für @job_name und @job_password an. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die MicrosoftSQL Server-Anmeldeinformationen für @publisher_login und @publisher_password angeben. Fahren Sie mit Schritt 3 fort.

  3. Führen Sie auf dem Verleger sp_addpublication (Transact-SQL) aus. Geben Sie einen Veröffentlichungsnamen für @publication und für den @repl_freq-Parameter den Wert snapshot (bei einer Snapshotveröffentlichung) oder den Wert continuous (bei einer Transaktionsveröffentlichung) an. Geben Sie eventuell weitere Veröffentlichungsoptionen an. Dadurch wird die Veröffentlichung definiert.

    HinweisHinweis

    Veröffentlichungsnamen dürfen die folgenden Zeichen nicht enthalten:

    % * [ ] | : " ? \ / < >

  4. Führen Sie auf dem Verleger sp_addpublication_snapshot (Transact-SQL) aus. Geben Sie den in Schritt 3 für @publication verwendeten Veröffentlichungsnamen und die Windows-Anmeldeinformationen, unter denen der Snapshot-Agent ausgeführt wird, für @snapshot_job_name und @job_password an. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die SQL Server-Anmeldeinformationen für @publisher_login und @publisher_password angeben. Dadurch wird ein Snapshot-Agentauftrag für die Veröffentlichung erstellt.

    SicherheitshinweisSicherheitshinweis

     Beim Konfigurieren eines Verlegers mit einem Remoteverteiler werden die Werte, die für alle Parameter einschließlich job_login und job_password bereitgestellt werden, als Nur-Text an den Verteiler gesendet. Sie sollten die Verbindung zwischen dem Verleger und dem zugehörigen Remoteverteiler verschlüsseln, bevor Sie diese gespeicherte Prozedur ausführen. Weitere Informationen finden Sie unter Verschlüsseln von Verbindungen zu SQL Server.

  5. Fügen Sie der Veröffentlichung Artikel hinzu. Weitere Informationen finden Sie unter Vorgehensweise: Definieren eines Artikels (Replikationsprogrammierung mit Transact-SQL).

  6. Starten Sie den Snapshot-Agentauftrag, um den Anfangssnapshot für diese Veröffentlichung zu generieren. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen des Anfangssnapshots (Replikationsprogrammierung mit Transact-SQL).

So erstellen Sie eine Mergeveröffentlichung

  1. Führen Sie auf dem Verleger sp_replicationdboption (Transact-SQL) aus, um die Veröffentlichung der aktuellen Datenbank mit der Mergereplikation zu aktivieren.

  2. Führen Sie auf dem Verleger für die Veröffentlichungsdatenbank sp_addmergepublication (Transact-SQL) aus. Geben Sie einen Veröffentlichungsnamen für @publication und eventuell weitere Veröffentlichungsoptionen an. Dadurch wird die Veröffentlichung definiert.

    HinweisHinweis

    Veröffentlichungsnamen dürfen die folgenden Zeichen nicht enthalten:

    % * [ ] | : " ? \ / < >

  3. Führen Sie auf dem Verleger sp_addpublication_snapshot (Transact-SQL) aus. Geben Sie den in Schritt 2 für @publication verwendeten Veröffentlichungsnamen und die Windows-Anmeldeinformationen, unter denen der Snapshot-Agent ausgeführt wird, für @snapshot_job_name und @job_password an. Wenn der Agent zum Herstellen der Verbindung mit dem Verleger die SQL Server-Authentifizierung verwendet, müssen Sie zudem den Wert 0 für @publisher_security_mode und die SQL Server-Anmeldeinformationen für @publisher_login und @publisher_password angeben. Dadurch wird ein Snapshot-Agentauftrag für die Veröffentlichung erstellt.

    SicherheitshinweisSicherheitshinweis

     Beim Konfigurieren eines Verlegers mit einem Remoteverteiler werden die Werte, die für alle Parameter einschließlich job_login und job_password bereitgestellt werden, als Nur-Text an den Verteiler gesendet. Sie sollten die Verbindung zwischen dem Verleger und dem zugehörigen Remoteverteiler verschlüsseln, bevor Sie diese gespeicherte Prozedur ausführen. Weitere Informationen finden Sie unter Verschlüsseln von Verbindungen zu SQL Server.

  4. Fügen Sie der Veröffentlichung Artikel hinzu. Weitere Informationen finden Sie unter Vorgehensweise: Definieren eines Artikels (Replikationsprogrammierung mit Transact-SQL).

  5. Starten Sie den Snapshot-Agentauftrag, um den Anfangssnapshot für diese Veröffentlichung zu generieren. Weitere Informationen finden Sie unter Vorgehensweise: Erstellen des Anfangssnapshots (Replikationsprogrammierung mit Transact-SQL).

Beispiel

In diesem Beispiel wird eine Transaktionsveröffentlichung erstellt. Anhand von Skriptvariablen werden Windows-Anmeldeinformationen übergeben, die zur Erstellung von Aufträgen für den Snapshot-Agent und den Protokolllese-Agent erforderlich sind.

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. 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 @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication 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;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

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

In diesem Beispiel wird eine Mergeveröffentlichung erstellt. Anhand von Skriptvariablen werden Windows-Anmeldeinformationen übergeben, die zur Erstellung des Auftrags für den Snapshot-Agent erforderlich sind.

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

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @login = $(Login);
SET @password = $(Password);

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
  @dbname=@publicationDB, 
  @optname=N'merge publish',
  @value = N'true' 

-- Create a new merge publication, explicitly setting the defaults. 
USE [AdventureWorks]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks.',
  @publication_compatibility_level  = N'90RTM';

-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot 
  @publication = @publication, 
  @job_login = @login, 
  @job_password = @password;
GO