Aracılığıyla paylaş


Yineleme sistem saklı yordamlar kavramları

De SQL Server, tüm kullanıcı tarafından yapılandırılabilen işlevselliği çoğaltma topolojisini programlı erişim sistem saklı yordamlar tarafından sağlanır. Saklı yordamları kullanarak tek tek yürütülebileceğini ise SQL Server Management Studioveya sqlcmd komut satırı yardımcı programı, yazmak yararlı olabilir Transact-SQLkomut dosyaları mantıksal bir sıra çoğaltma görevleri gerçekleştirmek için yürütülebilecek.

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

  • Çoğaltma topolojisini dağıtmak için gereken adımları kalıcı bir kopyasını tutar.

  • 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 kodu sorun giderme etkinleştirerek yeni veritabanı yöneticileri yetiştirmektedir.

    Güvenlik notuGüvenlik Notu

    Komut dosyası güvenlik açıkları kaynağı olabilir; Bunlar kullanıcı bilgisi veya müdahalesi olmadan sistem işlevler çağırabilirsiniz ve güvenlik 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çıdan, bir komut dosyası bir veya daha fazla serisidir Transact-SQLifadeler nerede her deyimi yürütür bir çoğaltma depolanmış yordam. Komut dosyaları, metin dosyaları, sqlcmd yardımcı programını kullanarak çalıştırılabilir genelde .sql uzantılı bir dosya, vardır. Bir komut dosyası çalıştırıldığında, yarar dosyada depolanmış sql deyimleri yürütür. Sorgu nesne olarak komut dosyası aynı şekilde saklanabilir bir SQL Server Management Studioproje.

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

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

  • Çoğaltma sihirbazları sağlanan komut dosyası oluşturma özelliklerini kullanabilirsiniz 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önetimi Nesneleri'ni (RMOs) program 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-SQLkomut dosyası bir veya daha fazla gruplar var. go komutu bir toplu iş sonu sinyalleri. Eğer bir Transact-SQLkomut git komutları yok, tek bir toplu iş yürütülür.

  • Birden çok çoğaltma yürütme tek bir toplu iş içinde ilk prosedürü sonra saklı yordamlar, sonraki yordamlar: toplu execute anahtar gelmelidir.

  • Önce toplu iş yürütme toplu tüm saklı yordamlar derlemeniz gerekir. Ancak, bir kez toplu derlenmiştir ve yürütme planı oluşturuldu, bir çalışma zamanı hatası olabilir veya değil oluşabilir.

  • Çoğaltmayı yapılandırmak için komut dosyası oluştururken, komut dosyasını güvenlik kimlik bilgilerini depolama önlemek için Windows kimlik doğrulaması kullanmanız gerekir. Bir komut dosyasında kimlik bilgileri saklamanız gerekir, 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'AdventureWorks2012'; 

-- 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 AdventureWorks2012 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 kaydedilmiş olması instdistpub.sqlçalıştırın veya gerektiğinde yeniden.

Önceki komut dosyası içeren sqlcmdhangi çoğaltma kod örnekleri pek çok kullanılan değişkenler, komut SQL ServerÇevrimiçi Kitaplar. Komut dosyası değişkenleri kullanarak tanımlanan $(MyVariable)sözdizimi. Komut satırında ya da komut dosyasına değişkenleri geçirilebilir için değerleri SQL Server Management Studio. Daha fazla bilgi için bkz: bir sonraki bölümde bu konu, "Executing çoğaltma Scripts."

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

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

SQL Server Management Studio'yu sql sorgu dosyası oluşturma

Bir çoğaltma Transact-SQLkomut dosyası, sql sorgu dosyası olarak oluşturulabilir bir SQL Server Management Studioproje. Komut dosyası yazıldıktan sonra bu sorgu dosyasını veritabanına bir bağlantı kurulabilir ve komut çalıştırılabilir. Nasıl oluşturulacağı hakkında daha fazla bilgi için Transact-SQLkullanarak komut dosyaları SQL Server Management Studiobakın Sorgu ve Metin Düzenleyicileri (SQL Server Management Studio).

Değişkenler, komut dosyası içeren bir komut dosyası SQL Server Management Studioçalıştırması gerekir sqlcmdmod. İçinde sqlcmdmod, sorgu Düzenleyicisi ek sözdizimi özgü kabul sqlcmd, gibi :setvar, bir değişkenin değerine kullanılan. Hakkında daha fazla bilgi için sqlcmdmod bkz, sqlcmd komut dosyaları sorgu Düzenleyicisi ile düzenleme. Aşağıdaki komut, :setvariç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
--

: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 komut satırından çalıştırmak için nasıl kullanıldığını gösterir instdistpub.sqlkomut dosyasını kullanarak sqlcmd yardımcı programını:

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

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

Bu örnekte, -Egeçiş bağlanırken Windows kimlik doğrulaması kullanılır gösterir SQL Server. Windows kimlik doğrulaması kullanırken, kullanıcı adı ve parola komut dosyasını depolamak için gerek yoktur. Komut dosyası yolu ve adı belirtilen tarafından -igeçiş ve çıktı dosyasının adını belirtilen tarafından -ogeçiş (kimden çıktı SQL ServerBu anahtarı kullanıldığında konsolu yerine bu dosyaya yazılır). sqlcmdYarar sağlar komut dosyası değişkenleri için geçmek için bir Transact-SQLkomut dosyası çalışma zamanı kullanarak -vgeçiş. Bu örnekte, sqlcmdher bir örneğini değiştirir $(DistPubServer)değeri ile komut N'MyDistributorAndPublisher'önce yürütme.

[!NOT]

-XAnahtarı devre dışı bırakır komut dosyası değişkenleri.

Bir toplu iş dosyasında 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 otomatikleştirilebilir. Aşağıdaki toplu iş dosyası kullanır sqlcmdbırakın ve abonelik veritabanı oluşturun ve birleştirme çekme abonelik eklemek için yarar. 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=AdventureWorks2012
SET SubDb=AdventureWorks2012Replica
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\110\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

Yaygın çoğaltma görevleri komut dosyası oluşturma

Bazı en yaygın çoğaltma görevler sistem saklı yordamları kullanarak komut şunlardır:

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

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

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

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

  • Silme yayınları ve makaleleri

  • Çekme abonelik oluşturma

  • Çekme abonelik değiştirme

  • Çekme abonelik silme

  • Itme abonelik oluşturma

  • Itme abonelik değiştirme

  • Itme abonelik silme

  • Çekme abonelik eşitleme

Ayrıca bkz.

Başvuru

Çoğaltma depolanan yordamlar (Transact-sql)

Kavramlar

Çoğaltma programlama kavramları

Komut dosyası çoğaltma