Pojęcia dotyczące procedury zapisanej w systemie replikacji

W SQL Server, programowy dostęp do wszystkich funkcji użytkownika można konfigurować w topologii replikacja jest udostępniany przez procedury składowane w systemie.Podczas procedury przechowywane mogą być wykonywane oddzielnie, używając SQL Server Management Studio lub narzędzie wiersza polecenia polecenie sqlcmd może być korzystne dla zapisu Transact-SQL plików skryptów, które mogą być wykonywane do wykonania logicznej sekwencji zadań replikacja.

Skrypty zadania replikacja zapewnia następujące korzyści:

  • Śledzi trwałą kopię kroki wdrażane na topologia replikacja.

  • Używa jednego skryptu do konfigurowania wielu subskrybentów.

  • Szybko educates nowym administratorom bazy danych, umożliwiając im oceny, zrozumienie, zmienić lub Rozwiązywanie problemów z kodu.

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

    Skrypty mogą być źródło luki w zabezpieczeniach; można wywołać funkcje systemowe bez wiedza użytkownika lub interwencji, a może zawierać poświadczenia zabezpieczeń w postaci zwykłego tekstu.Przejrzyj skrypty dla problemów z zabezpieczeniami, przed ich użyciem.

Tworzenie skryptów replikacji

Z punktu widzenia replikacja skryptu jest serią jednego lub więcej Transact-SQL instrukcji, gdzie każda instrukcja wykonuje replikacja procedura składowana.Skrypty są pliki tekstowe, często z rozszerzeniem pliku .sql, który można uruchomić przy użyciu narzędzia polecenie sqlcmd.Po uruchomieniu pliku skryptu narzędzia wykonuje instrukcje SQL, przechowywane w pliku.Podobnie, skrypt może być zapisany jako obiekt kwerendy w SQL Server Management Studio projektu.

Skrypty replikacji można utworzyć następującymi sposobami:

  • Ręcznie utworzyć skrypt.

  • Korzystanie z funkcji generowania skryptu, dostarczanych w kreatorach replikacja lub

  • SQL Server Management Studio. Aby uzyskać więcej informacji, zobacz Jak Skrypt Replication Objects (SQL Server Management Studio).

  • Obiekty zarządzania replikacji (RMOs) umożliwia programowo Generuj skrypt w celu utworzenia obiektu RMO.

Podczas ręcznego tworzenia skryptów replikacja, należy pamiętać o następujące kwestie:

  • Transact-SQL skrypty mają jeden lub więcej partii.Polecenia przejdź sygnalizuje koniec partia.Jeśli Transact-SQL skryptu nie ma żadnych poleceń przejdź, jest wykonywany jako pojedynczej partia.

  • Podczas wykonywania replikacja wielu procedur przechowywanych w jednej partia po pierwszej procedury, wszystkich kolejnych procedur w partia musi być poprzedzony słowem kluczowym EXECUTE.

  • Należy skompilować wszystkich procedur przechowywanych w partia, zanim zadanie partia będzie wykonać.Jednak po skompilowaniu partia i o plan wykonania został utworzony, uruchom -czas błąd może lub nie może występować.

  • Podczas tworzenia skryptów, aby skonfigurować replikacja, aby uniknąć przechowywania poświadczenia zabezpieczeń w pliku skryptu należy używać uwierzytelniania systemu Windows.Jeśli poświadczenia muszą być przechowywane w pliku skryptu, należy zabezpieczyć plik, aby uniemożliwić nieautoryzowany dostęp.

Przykładowy skrypt replikacji

Poniższy skrypt może być wykonywany ustawienia publikacji i dystrybucji na serwerze.

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

-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);
-- Specify the replication working directory.
SET @directory = N'\\' + $(DistPubServer) + '\repldata';
-- Specify the publication database.
SET @publicationDB = N'AdventureWorks2008R2'; 

-- Install the server MYDISTPUB as a Distributor using the defaults,
-- including autogenerating the distributor password.
USE master
EXEC sp_adddistributor @distributor = @distributor;

-- Create a new distribution database using the defaults, including
-- using Windows Authentication.
USE master
EXEC sp_adddistributiondb @database = @distributionDB, 
    @security_mode = 1;
GO

-- Create a Publisher and enable AdventureWorks2008R2 for replication.
-- Add MYDISTPUB as a publisher with MYDISTPUB as a local distributor
-- and use Windows Authentication.
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);

USE [distribution]
EXEC sp_adddistpublisher @publisher=@publisher, 
    @distribution_db=@distributionDB, 
    @security_mode = 1;
GO 

Ten skrypt można zapisać lokalnie jako instdistpub.sql Tak, aby można uruchomić lub ponownie, gdy są potrzebne.

Poprzedni skrypt zawiera polecenie sqlcmd wykonywanie skryptów zmiennych, które są używane w wielu przykładach kodu replikacja w SQL Server Books Online.Zmienne skryptów są definiowane za pomocą $(MyVariable) składni.Wartości dla zmiennych mogą być przekazywane do skryptu w wierszu polecenia lub w SQL Server Management Studio.Aby uzyskać więcej informacji zobacz następną sekcję w tym temacie "Executing replikacji skrypty."

Wykonywanie skryptów replikacji

Po utworzeniu skryptu replikacja mogą być wykonywane w jednym z następujących sposobów:

Tworzenie pliku kwerendy SQL w programie SQL Server Management Studio

Replikacja Transact-SQL plik skryptu można utworzyć jako plik kwerendy SQL w SQL Server Management Studio projektu.Po napisano skrypt jest możliwe połączenie z bazą danych dla tego pliku kwerendy i mogą być wykonywane skryptu.Aby uzyskać więcej informacji na temat tworzenia Transact-SQL skryptów za pomocą SQL Server Management Studio, zobacz Pisanie, analizowania i edycji skryptów z SQL Server Management Studio.

Aby użyć skryptu, który zawiera wykonywanie skryptów zmiennych, SQL Server Management Studio musi być uruchomiony polecenie sqlcmd tryb.W polecenie sqlcmd trybie Edytor kwerend akceptuje składnią specyficzne dla polecenie sqlcmd, takich jak :setvar, która jest stosowana wartość zmiennej.Więcej informacji o polecenie sqlcmd trybu, zobacz Edytowanie skryptów polecenie SQLCMD z Edytor kwerend.W poniższym skrypcie :setvar jest używany do dostarczania wartość dla $(DistPubServer) zmiennej.

:setvar DistPubServer N'MyPublisherAndDistributor';

-- Install the Distributor and the distribution database.
DECLARE @distributor AS sysname;
DECLARE @distributionDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @directory AS nvarchar(500);
DECLARE @publicationDB AS sysname;
-- Specify the Distributor name.
SET @distributor = $(DistPubServer);
-- Specify the distribution database.
SET @distributionDB = N'distribution';
-- Specify the Publisher name.
SET @publisher = $(DistPubServer);

--
-- Additional code goes here
--

Przy użyciu polecenie sqlcmd narzędzie z wiersza polecenia

W poniższym przykładzie pokazano, jak wiersz polecenia jest używany do wykonać instdistpub.sql przy użyciu pliku skryptu Narzędzia polecenie sqlcmd:

sqlcmd.exe -E -S sqlserverinstance -i C:\instdistpub.sql -o C:\output.log -v DistPubServer="N'MyDistributorAndPublisher'"

W tym przykładzie -E przełącznika wskazuje używane uwierzytelnianie systemu Windows, łącząc się z SQL Server.Podczas korzystania z uwierzytelniania systemu Windows, nie ma konieczności przechowywane nazwy użytkownika i hasła w pliku skryptu.Nazwę i ścieżka pliku skryptu jest określony przez -i przełącznikiem a nazwą pliku wyjściowego jest określony przez -o Przełącz (wyjście z SQL Server są zapisywane do tego pliku zamiast konsoli, gdy używany jest przełącznik).sqlcmd Narzędzie umożliwia przekazywanie zmiennych wykonywanie skryptów do Transact-SQL skrypt przy użyciu runtime -v przełącznika.W tym przykładzie sqlcmd zastąpi każde wystąpienie $(DistPubServer) w skrypcie z wartością N'MyDistributorAndPublisher' przed wykonanie.

Ostrzeżenie

-X Przełącznik powoduje wyłączenie wykonywanie skryptów zmiennych.

Automatyzowanie zadań w pliku wsadowym

Za pomocą partia pliku, replikacja zadania administracyjne, zadania synchronizacji replikacja i inne zadania można zautomatyzować w tym samym pliku wsadowego.Następujące partia używa pliku polecenie sqlcmd narzędzie Usuwanie i ponowne utworzenie baza danych subskrypcji oraz dodawać scalania subskrypcja wciągana.Następnie plik wywoła agenta korespondencji seryjnej do synchronizacji nowej subskrypcja:

REM ----------------------Script to synchronize merge subscription ----------------------
REM -- Creates subscription database and 
REM -- synchronizes the subscription to MergeSalesPerson.
REM -- Current computer acts as both Publisher and Subscriber.
REM -------------------------------------------------------------------------------------

SET Publisher=%computername%
SET Subscriber=%computername%
SET PubDb=AdventureWorks2008R2
SET SubDb=AdventureWorks2008R2Replica
SET PubName=AdvWorksSalesOrdersMerge

REM -- Drop and recreate the subscription database at the Subscriber
sqlcmd /S%Subscriber% /E /Q"USE master IF EXISTS (SELECT * FROM sysdatabases WHERE name='%SubDb%' ) DROP DATABASE %SubDb%"
sqlcmd /S%Subscriber% /E /Q"USE master CREATE DATABASE %SubDb%"

REM -- Add a pull subscription at the Subscriber
sqlcmd /S%Subscriber% /E /Q"USE %SubDb% EXEC sp_addmergepullsubscription @publisher = %Publisher%, @publication = %PubName%, @publisher_db = %PubDb%"
sqlcmd /S%Subscriber% /E /Q"USE %SubDb%  EXEC sp_addmergepullsubscription_agent @publisher = %Publisher%, @publisher_db = %PubDb%, @publication = %PubName%, @subscriber = %Subscriber%, @subscriber_db = %SubDb%, @distributor = %Publisher%"

REM -- This batch file starts the merge agent at the Subscriber to 
REM -- synchronize a pull subscription to a merge publication.
REM -- The following must be supplied on one line.
"\Program Files\Microsoft SQL Server\100\COM\REPLMERG.EXE"  -Publisher  %Publisher% -Subscriber  %Subscriber%  -Distributor %Publisher%  -PublisherDB  %PubDb% -SubscriberDB %SubDb% -Publication %PubName% -PublisherSecurityMode 1 -OutputVerboseLevel 1  -Output  -SubscriberSecurityMode 1  -SubscriptionType 1 -DistributorSecurityMode 1 -Validate 3

Typowe zadania replikacji skryptów

Oto niektóre z typowych zadań replikacja można ładowanie przy użyciu procedury składowane w systemie:

  • Konfigurowanie publikacji i dystrybucji

  • Modyfikowanie Wydawca i właściwości dystrybutora

  • Wyłączanie publikowania i dystrybucji

  • Tworzenie publikacji i definiowanie artykułów

  • Usuwanie publikacji i artykuły

  • Tworzenie replikacji ściąganejsubskrypcja

  • Modyfikowanie replikacji ściąganejsubskrypcja

  • Usuwanie replikacji ściąganejsubskrypcja

  • Tworzenie wypychaniasubskrypcja

  • Modyfikowanie wypychaniasubskrypcja

  • Usuwanie wypychaniasubskrypcja

  • Synchronizacja replikacji ściąganejsubskrypcja