Jak Tworzenie publikacji (Programowanie replikacji Transact-SQL)

Publikacje można tworzyć programowo za pomocą procedur przechowywanych replikacja.Procedury przechowywane, które są używane będzie zależeć od typu tworzonej publikacja.

Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

Gdy jest to możliwe, należy używać uwierzytelniania systemu Windows. Jeśli to możliwe, monitują użytkowników o wprowadzenie poświadczenia zabezpieczeń w czasie wykonywania.Jeśli poświadczenia muszą być przechowywane w pliku skryptu, należy zabezpieczyć plik, aby uniemożliwić nieautoryzowany dostęp.

Aby utworzyć migawka lub transakcyjnych publikacja

  1. Wydawca bazy danych publikacji, należy wykonać sp_replicationdboption (języka Transact-SQL) włączyć publikacja bieżącej bazy danych przy użyciu migawka lub replikacja transakcyjna.

  2. Transakcyjne publikacja, należy określić, czy zadanie Agent czytnik dziennika istnieje dla baza danych publikacja.(Krok ten nie jest wymagany dla publikacji migawka).

    • Jeśli Agent odczytywania dziennika zadanie istnieje dla baza danych publikacji, przejdź do kroku 3.

    • Jeśli wiadomo, czy istnieje zadanie agenta czytnik dziennika dla bazy danych opublikowanych, wykonywał sp_helplogreader_agent (języka Transact-SQL) Wydawca na baza danych publikacja.

    • Jeśli zestaw wyników jest pusty, Utwórz Agent odczytywania dziennika zadania.Wydawca, należy wykonać sp_addlogreader_agent (języka Transact-SQL).Określ Microsoft poświadczenia systemu Windows, na jakich agent działa dla @ job_name i hasło @.If the agent will use SQL Server Authentication when connecting to the Publisher, you must also specify a value of 0 for @publisher_security_mode and the Microsoft SQL Server login information for @publisher_login and @publisher_password.Przejdź do kroku 3.

  3. Wydawca, należy wykonać sp_addpublication (języka Transact-SQL).Określ nazwę publikacja **publikacja @**i dla @ repl_freq parametru, określ wartość snapshot dla publikacja migawka lub wartość continuous dla publikacja transakcyjnych.Określ inne opcje publikacja.Definiuje publikacja.

    Ostrzeżenie

    Publikacja nazwy nie mogą zawierać następujących znaków:

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

  4. Wydawca, należy wykonać sp_addpublication_snapshot (języka Transact-SQL).Określ nazwę publikacja w kroku 3 dla publikacja @ i poświadczenia systemu Windows, na jakich Agent migawki jest uruchamiany dla @ snapshot_job_name i hasło @.Jeśli agent użyje uwierzytelniania programu SQL Server podczas łączenia się z Wydawca, należy także określić wartość 0 dla @Wydawca_security_mode i SQL Server informacji logowania dla @Wydawca_login i @Wydawca_password.Tworzy zadanie agenta migawkę w publikacja.

    Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

    Podczas konfigurowania Publisher z dystrybutor zdalny, wartości dostarczone dla wszystkich parametrów, łącznie z job_login i job_password, są wysyłane do dystrybutora jako zwykły tekst.Należy zaszyfrować połączenie między wydawcy i jego dystrybutor zdalny przed wykonywania tej procedura składowana.Aby uzyskać więcej informacji, zobacz Szyfrowania połączeńSQL Server.

  5. Dodać artykułów do publikacja.Aby uzyskać więcej informacji, zobacz Jak Definiowanie artykuł (Programowanie replikacji Transact-SQL).

  6. Rozpoczęcie zadanie agenta migawki do generowania migawka początkowa dla tej publikacja.Aby uzyskać więcej informacji, zobacz Jak Tworzenie migawki początkowego (Programowanie replikacji Transact-SQL).

Tworzenie publikacja seryjnej

  1. Wydawca, należy wykonać sp_replicationdboption (języka Transact-SQL) włączyć publikacja bieżącej bazy danych przy użyciu replikacja scalająca.

  2. Wydawca na baza danych publikacja, wykonanie sp_addmergepublication (języka Transact-SQL).Określ nazwę publikacja dla publikacja @ i inne opcje publikacja.Definiuje publikacja.

    Ostrzeżenie

    Publikacja nazwy nie mogą zawierać następujących znaków:

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

  3. Wydawca, należy wykonać sp_addpublication_snapshot (języka Transact-SQL).Określ nazwę publikacja w kroku 2 dla publikacja @ i poświadczenia systemu Windows, na jakich Agent migawki jest uruchamiany dla @ snapshot_job_name i hasło @.Jeśli agent użyje uwierzytelniania programu SQL Server podczas łączenia się z Wydawca, należy także określić wartość 0 dla @Wydawca_security_mode i SQL Server informacji logowania dla @Wydawca_login i @Wydawca_password.Tworzy zadanie agenta migawkę w publikacja.

    Uwaga dotycząca zabezpieczeńUwaga dotycząca zabezpieczeń

    Podczas konfigurowania Publisher z dystrybutor zdalny, wartości dostarczone dla wszystkich parametrów, łącznie z job_login i job_password, są wysyłane do dystrybutora jako zwykły tekst.Należy zaszyfrować połączenie między wydawcy i jego dystrybutor zdalny przed wykonywania tej procedura składowana.Aby uzyskać więcej informacji, zobacz Szyfrowania połączeńSQL Server.

  4. Dodać artykułów do publikacja.Aby uzyskać więcej informacji, zobacz Jak Definiowanie artykuł (Programowanie replikacji Transact-SQL).

  5. Rozpoczęcie zadanie agenta migawki do generowania migawka początkowa dla tej publikacja.Aby uzyskać więcej informacji, zobacz Jak Tworzenie migawki początkowego (Programowanie replikacji Transact-SQL).

Przykład

W tym przykładzie tworzony transakcyjnych publikacja.Zmienne skryptów są używane do przekazywania poświadczenia systemu Windows, potrzebne do tworzenia zadań dla agenta migawki i Agent odczytywania dziennika.

-- 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'AdventureWorks2008R2'; 
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

W tym przykładzie tworzony publikacja korespondencji seryjnej.Zmienne skryptów są używane do przekazywania poświadczenia systemu Windows, które są potrzebne do utworzenia zadanie agenta migawki.

-- 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'AdventureWorks2008R2'; 
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 [AdventureWorks2008R2]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2008R2.',
  @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