Udostępnij za pośrednictwem


Jak Włączanie aktualizacji subskrypcji dla transakcyjnych publikacje (Programowanie replikacji Transact-SQL)

Ostrzeżenie

Ta funkcja zostanie usunięta z przyszłej wersji programu Microsoft SQL Server. Należy unikać stosowania tej funkcji w nowych projektach oraz zaplanować modyfikację aplikacji, w których obecnie jest używana ta funkcja.

Podczas tworzenia publikacja transakcyjnych programowo przy użyciu replikacja procedur przechowywanych, można włączyć natychmiastowe lub aktualizowanie subskrypcje w kolejce.

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

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ć publikacja, która obsługuje natychmiastowego subskrypcje aktualizacji

  1. Jeśli to konieczne, Utwórz Agent odczytywania dziennika zadanie dla baza danych publikacji.

    • Jeśli zadanie Agent czytnik dziennika już istnieje dla baza danych publikacja, przejdź do kroku 2.

    • 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 pusta, Agent odczytywania dziennika można utworzyć zadanie.

    • W programie publisher, 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.

  2. Wykonanie sp_addpublication (języka Transact-SQL), określając wartość true dla parametru @ allow_sync_tran.

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

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

  5. Subskrybent, tworzenie, aktualizowanie subskrypcja do tej publikacja.Aby uzyskać więcej informacji, zobacz Jak Tworzenie aktualizowalna subskrypcji transakcyjnych publikacji (Programowanie replikacji Transact-SQL).

Aby utworzyć publikacja, która obsługuje kolejce subskrypcje aktualizacji

  1. Jeśli to konieczne, Utwórz Agent odczytywania dziennika zadanie dla baza danych publikacji.

    • Jeśli zadanie Agent czytnik dziennika już istnieje dla baza danych publikacja, przejdź do kroku 2.

    • 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 pusta, a następnie Agent odczytywania dziennika można utworzyć zadanie.

    • W programie publisher, należy wykonać sp_addlogreader_agent (języka Transact-SQL).Określ poświadczenia systemu Windows, na jakich agent działa dla @ 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.

  2. W razie potrzeby można utworzyć zadanie agenta czytnik kolejki dla dystrybutora.

    • Jeśli zadanie agenta czytnik kolejka jest już w baza danych dystrybucji, przejdź do kroku 3.

    • Jeśli masz pewności, czy zadanie agenta czytnik kolejka istnieje dla baza danych dystrybucji wykonać sp_helpqreader_agent (języka Transact-SQL) u dystrybutora w bazie danych dystrybucji.Jeśli zestaw wyników jest puste, można utworzyć zadanie agenta czytnik kolejki.

    • wykonać na Dystrybutor, sp_addqreader_agent (języka Transact-SQL).Określ poświadczenia systemu Windows, na jakich agent działa dla @ job_name i hasło @.Poświadczenia te są używane, gdy Agent czytnik kolejki łączy się z Wydawca i abonenta.Aby uzyskać więcej informacji, zobacz Model zabezpieczeń Agent replikacji.

  3. Wykonanie sp_addpublication (języka Transact-SQL), określając wartość true dla parametru @ allow_queued_tran i wartości pub wins, ponownego inicjowania sub, lub sub wins dla @ conflict_policy.

  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.

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

  6. Subskrybent, tworzenie, aktualizowanie subskrypcja do tej publikacja.Aby uzyskać więcej informacji, zobacz Jak Tworzenie aktualizowalna subskrypcji transakcyjnych publikacji (Programowanie replikacji Transact-SQL).

Aby zmienić konfliktu zasady dla publikacja, który umożliwia kolejce subskrypcje aktualizacji

  • Wydawca na baza danych publikacja, wykonanie sp_changepublication (języka Transact-SQL).Określ wartość conflict_policy dla @ Właściwość i zasad konfliktu żądany tryb pub wins, ponownego inicjowania sub, lub sub wins dla wartość @.

Przykład

W tym przykładzie tworzony publikację, która obsługuje zarówno natychmiastowe, jak i aktualizowanie w kolejce ściągać subskrypcji.

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

--Declarations for adding a transactional publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2008R2'; 
SET @publication = N'AdvWorksProductTran'; 
SET @login = $(Login); 
SET @password = $(Password); 

USE [AdventureWorks2008R2]
-- Enable transactional 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 transactional publication that supports immediate updating, 
-- queued updating, and pull subscriptions. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_sync_tran = N'true', 
    @allow_queued_tran = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true',
  -- Explicitly declare the related default properties 
    @conflict_policy = N'pub wins';

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

--Declarations for adding an article.
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product'; 
SET @owner = N'Production'; 

-- Add a horizontally and vertically filtered article for the Product table.
USE [AdventureWorks2008R2]
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @article, 
    @source_table = @article, 
    @vertical_partition = N'false', 
    @type = N'logbased',
    @source_owner = @owner, 
    @destination_owner = @owner;
GO