Aracılığıyla paylaş


Yineleme sistem saklı yordamlar kavramları

De SQL Server, kullanıcı tarafından yapılandırılabilen bir çoğaltma topolojisi işlevleri için programlı erişim tarafından sağlanan sistem saklı yordamları.Saklı yordamları kullanarak tek tek yürütülebileceğini iken SQL Server Management Studio veya sqlcmd komut satırı yardımcı programı, bunu yazmak yararlı Transact-SQL komut dosyalarını çoğaltma görevleri mantıksal bir sıra gerçekleştirmek için çalıştırılabilir

Çoğaltma görevler için komut dosyası aşağıdaki yararları sağlar:

  • Dağıtmak için gereken adımları kalıcı bir kopyasını tutar sizin çoğaltma topolojisi.

  • Birden çok aboneleri yapılandırmak için tek bir komut dosyası kullanır.

  • Hızlı bir şekilde değerlendirmek anlamak değiştirmek veya kodunda sorun giderme etkinleştirerek yeni veritabanı yöneticileri ile Eğitiyor.

    Güvenlik notuGüvenlik Notu

    Komut dosyası güvenlik açıkları kaynak olabilir; Bunlar kullanıcı bilgi veya müdahalesi olmadan sistem işlevleri çağırabilirsiniz ve güvenlik kimlik bilgileri düz metin içerebilir.Bunları kullanmadan önce komut dosyaları için güvenlik konuları gözden geçirin.

Çoğaltma komut dosyaları oluşturma

Çoğaltma açısından bir komut dosyası bir veya daha fazla serisidir Transact-SQL Burada her deyimini yürütür bir yineleme ifadeleri saklı yordam.Sqlcmd yardımcı programını kullanarak çalıştırabileceğiniz genelde .sql dosya uzantısına sahip, metin dosyaları, komut dosyalarıdır.Komut dosyasını çalıştırdığınızda, yardımcı programı dosyada depolanmış sql deyimleri yürütür.Benzer şekilde, bir komut dosyası bir sorgu nesnesi olarak depolayabileceğiniz bir SQL Server Management Studio projesi.

Çoğaltma komut dosyaları aşağıdaki yollarla oluşturulabilir:

  • Komut dosyasını el ile oluşturun.

  • Çoğaltma Sihirbazları'de sağlanan komut dosyası oluşturma özellikleri kullanın veya

  • SQL Server Management Studio. Daha fazla bilgi için bkz: Nasıl yapılır: Script Yineleme nesneleri (sql Server Management Studio'yu).

  • Çoğaltma Yönetim Nesneleri'ni (RMOs) aracılığıyla rmo nesnesi oluşturmak için komut dosyası oluşturmak için kullanın.

Çoğaltma komut dosyaları el ile oluşturduğunuzda, aşağıdaki konuları göz önünde bulundurun:

  • Transact-SQL bir veya daha fazla toplu komut dosyaları vardır.go komutu bir toplu iş sonuna sinyal gönderir.Yoksa bir Transact-SQL Git komutları komut dosyası yok, olarak yürütüldüğündetek bir toplu iş iş.

  • Birden çok çoğaltma çalıştırmak tek bir toplu işlemi ilk yordamı saklı yordamları, tüm sonraki yordamlar toplu iş yürütme anahtar sözcüğünden sonra gelen gerekir.

  • Toplu olacaktır önce tüm saklı yordamlar toplu derlemek gerekir yürütmek.Ancak, toplu iş iş derlenmiş bir kez ve bir yürütme planı oluşturuldu, run -saat hata olabilir ya da ortaya çıkabilir.

  • çoğaltma yapılandırmak için komut dosyalarını oluştururken, komut dosyası güvenlik kimlik bilgileri bilgilerini depolamak önlemek için Windows kimlik bilgileri doğrulaması kullanmanız gerekir.Bir komut dosyasında kimlik bilgileri bilgilerini depolamak, yetkisiz erişimi önlemek için dosyayı güvenli gerekir.

Çoğaltma komut dosyası örneği

Aşağıdaki komut dosyası, Kurulum yayımlama ve dağıtım bir sunucuda çalıştırılabilir.

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

Bu komut dosyası daha sonra yerel olarak kaydedilebilir instdistpub.sql böylece çalıştırmak veya gerektiğinde yeniden çalıştırın.

Önceki komut dosyası kullanan kullanan kullanan dosyası içeren sqlcmd birçok çoğaltma kod örnekleri kullanılan değişkenler, komut dosyası kullanan kullanan kullanan dosyası SQL Server Books Online.Komut dosyası değişkenleri kullanarak tanımlanan $(MyVariable) sözdizimi.Değişkenleri komut dosyası komut satırında veya içinde geçebilmesi için değerleri SQL Server Management Studio.Daha fazla bilgi için bkz: sonraki bölümde bu konu "Executing çoğaltma komut dosyalarının."

Çoğaltma komut dosyalarını çalıştırma

Bir kez oluşturulduktan sonra bir çoğaltma komut dosyası aşağıdaki yollardan biriyle yürütülebilecek:

sql Server Management Studio'da sql sorgu dosyası oluşturma

Bir çoğaltma Transact-SQL komut dosyası, sql sorgu dosyası olarak oluşturulabilir bir SQL Server Management Studio projesi.Komut dosyası yazıldıktan sonra bu sorgu dosyasını veritabanına bir bağlantı yapılabilir ve komut dosyası çalıştırılır.Nasıl oluşturulacağı hakkında daha fazla bilgi için Transact-SQL komut dosyaları kullanarak SQL Server Management Studioiçin bkz: Yazma, çözümleme ve SQL Server Management Studio ile komut dosyalarını düzenleme.

Değişkenler, komut dosyası kullanan kullanan kullanan dosyası içeren komut dosyası kullanan kullanan kullanan kullanan dosyası kullanmak için SQL Server Management Studio çalışmalıdır sqlcmd mod.De sqlcmd mod, sorgu Düzenleyicisi özgü ek sözdizimini kabul sqlcmd, gibi :setvar, kendisi için kullanılan bir değer için bir değişken.Hakkında daha fazla bilgi için sqlcmd modu Bkz: SQLcmd komut dosyalarını Query Düzenleyicisi ile düzenleme.Aşağıdaki komut, :setvar için bir değer sağlamak için kullanılan $(DistPubServer) değişkeni.

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

Sqlcmd yardımcı programı komut satırından kullanma

Aşağıdaki örnek, nasıl komut satırı için kullanılan gösterir yürütmek instdistpub.sql komut dosyası kullanarak sqlcmd yardımcı programını:

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

Bu örnekte, -E anahtarı gösterir, Windows kimlik doğrulaması kullanılır bağlanırken SQL Server.Windows kimlik doğrulaması kullanırken, kullanıcı adı ve parola komut dosyasında depolamak için gerek yoktur.Adı ve yol komut dosyası tarafından belirtilen -i anahtarı ve çıktı dosyasının adı belirtilir -o geçiş (karşı çıktı SQL Server Bu anahtar kullanıldığında, konsolun yerine bu dosyaya yazılır).The sqlcmd utility enables you to pass scripting variables to a Transact-SQL script at runtime using the -v switch.Bu örnekte, sqlcmd yerini alan her örnek $(DistPubServer) değeri ile komut N'MyDistributorAndPublisher' önce yürütme.

Not

The -X switch disables scripting variables.

Bir toplu iş dosyasındaki görevleri otomatikleştirme

Bir toplu işlemi kullanarak dosya çoğaltma yönetim görevleri, çoğaltma eşitleme görevleri ve diğer görevleri aynı toplu iş dosyasında otomatik olarak yapılabilir.Aşağıdaki toplu iş dosyası kullanır sqlcmd bırakın ve abonelik veritabanı yeniden oluşturun ve birleştirme istek temelli abonelik eklemek için yardımcı program.Sonra dosyayı yeni abonelik eşitlemek için Birleştirme Aracısı çalıştırır:

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

Genel Komut dosyası çoğaltma görevleri

Komut dosyası çoğaltma en yaygın görevlerden bazıları sistem saklı yordamları kullanarak pencerelerini şunlardır:

  • Yayımlama ve dağıtım yapılandırma

  • Yayımcı ve dağıtımcı özelliklerini değiştirme

  • Yayımlamayı ve dağıtımı devre dışı bırakma

  • Yayınları oluşturma ve makaleleri tanımlama

  • Silme yayınları ve makaleleri

  • istek temelli abonelik oluşturma

  • istek temelli abonelik değiştirme

  • istek temelli abonelik silme

  • Oluşturma birgönderme temelli abonelik

  • Değiştirme birgönderme temelli abonelik

  • Silme birgönderme temelli abonelik

  • istek temelli abonelik eşitleme