Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Yönetilen Örneği
SQL Server'da, bir çoğaltma topolojisindeki kullanıcı tarafından yapılandırılabilir tüm işlevlere programatik erişim sistem olarak depolanmış prosedürler tarafından sağlanır. Saklanan prosedürler SQL Server Management Studio veya sqlcmd komut satırı aracı kullanılarak tek tek çalıştırılabilse de, mantıksal bir replikasyon görevi dizisini gerçekleştirmek için yürütülebilecek Transact-SQL script dosyaları yazmak faydalı olabilir.
Örnekleme betik görevleri aşağıdaki faydaları sağlar:
Replikasyon topolojinizi dağıtmak için kullanılan adımların kalıcı bir kopyasını tutar.
Birden fazla aboneyi yapılandırmak için tek bir betik kullanır.
Yeni veritabanı yöneticilerini hızlıca eğitmek, kodu değerlendirmek, anlamak, değiştirmek veya sorun gidermek için olanak tanır.
Önemli
Scriptler güvenlik açıklarının kaynağı olabilir; Kullanıcı bilgisi veya müdahalesi olmadan sistem fonksiyonlarını çağırabilirler ve güvenlik bilgilerini düz metin olarak içerebilirler. Kullanmadan önce güvenlik sorunları için betikleri gözden geçirin.
Replikasyon Scriptleri Oluşturmak
Çoğaltma açısından bakıldığında, script, her ifadenin bir replikasyon depolanmış prosedürünü yürüttüğü bir veya daha fazla Transact-SQL ifadesinden oluşan bir dizidir. Scriptler, genellikle .sql bir dosya uzantısı olan ve sqlcmd yardımcı programı kullanılarak çalıştırılabilen metin dosyalarıdır. Bir script dosyası çalıştırıldığında, yardımcı dosyada saklanan SQL ifadelerini çalıştırır. Benzer şekilde, bir script SQL Server Management Studio projesinde sorgu nesnesi olarak depolanabilir.
Çoğaltma betikleri aşağıdaki şekillerde oluşturulabilir:
Senaryoyu manuel olarak oluşturun.
Çoğaltma büyücülerinde sağlanan script oluşturma özelliklerini kullanın veya
SQL Server Management Studio. Daha fazla bilgi için Scripting Replication bölümüne bakınız.
RMO nesnesi oluşturmak için betiği programlı olarak oluşturmak için Replikasyon Yönetim Nesneleri (RMO) kullanın.
Çoğaltma betiklerini manuel olarak oluştururken, aşağıdaki hususları aklınızda bulundurun:
Transact-SQL scriptlerde bir veya daha fazla parti bulunur. GO komutu bir partinin bittiğini işaret eder. Bir Transact-SQL scriptinde GO komutu yoksa, tek bir toplu olarak çalıştırılır.
Tek bir toplu toplu tekrarlama depolanan prosedür çalıştırıldığında, ilk prosedürden sonra, toplu aşamadaki tüm sonraki prosedürlerin önünde EXECUTE anahtar kelimesi olmalıdır.
Bir toplu bölümdeki tüm depolanan prosedürler bir toplu çalışmadan önce derlenmelidir. Ancak, toplu derlendikten ve bir yürütme planı oluşturulduktan sonra, çalışma zamanı hatası meydana gelebilir veya olmayabilir.
Replikasyonu yapılandırmak için script oluştururken, güvenlik kimlik bilgilerini script dosyasında saklamaktan kaçınmak için Windows Authentication kullanmalısınız. Kimlik bilgilerini bir betik dosyasında depolamanız gerekiyorsa, yetkisiz erişimi önlemek için dosyanın güvenliğini sağlamalısınız.
Örnek Replikasyon Scripti
Aşağıdaki betik, bir sunucuda yayınlama ve dağıtım kurulumu için ç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'AdventureWorks2022';
-- 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 AdventureWorks2022 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 betik daha sonra yerel instdistpub.sql olarak kaydedilebilir ve gerektiğinde çalıştırılabilir veya tekrar çalıştırılabilir.
Önceki betik, SQL Server Books Online'daki birçok replikasyon kodu örneğinde kullanılan sqlcmd betik değişkenlerini içerir. Scripting değişkenleri sözdizimi kullanılarak $(MyVariable) tanımlanır. Değişkenler için değerler, komut satırında veya SQL Server Management Studio'da bir script'e iletilebilir. Daha fazla bilgi için, bu konunun bir sonraki bölümü olan "Çoğaltma Scriptlerini Yürütme" bölümüne bakınız.
Çoğaltma Scriptleri Yürütülmesi
Oluşturulduktan sonra, bir replikasyon betiği aşağıdaki yöntemlerden biriyle çalıştırılabilir:
SQL Server Management Studio'da SQL Sorgu Dosyası Oluşturma
Bir replikasyon Transact-SQL script dosyası, SQL Server Management Studio projesinde SQL Sorgu dosyası olarak oluşturulabilir. Script yazıldıktan sonra, bu sorgu dosyası için veritabanına bağlantı kurulabilir ve script çalıştırılabilir. SQL Server Management Studio kullanılarak Transact-SQL betikleri nasıl oluşturulacağı hakkında daha fazla bilgi için Sorgu ve Metin Düzenleyicileri (SQL Server Management Studio) bölümüne bakınız.
Scripting değişkenleri içeren bir betik kullanmak için SQL Server Management Studio sqlcmd modunda çalışmalıdır.
sqlcmd modunda, Sorgu Düzenleyici sqlcmd'ye özgü ek sözdizimi kabul eder; örneğin :setvar, bu değişken için bir değer için kullanılır.
sqlcmd modu hakkında daha fazla bilgi için Sorgu Düzenleyici ile SQLCMD Scripts Düzenle'e bakınız. Aşağıdaki betikte, :setvar değişken için $(DistPubServer) bir değer sağlamak için kullanılır.
: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
--
Komut Satırından sqlcmd Utility kullanılarak
Aşağıdaki örnek, komut satırının sqlcmd aracı kullanılarak script dosyasını çalıştırmak instdistpub.sql için nasıl kullanıldığını göstermektedir:
sqlcmd.exe -E -S sqlserverinstance -i C:\instdistpub.sql -o C:\output.log -v DistPubServer="N'MyDistributorAndPublisher'"
Bu örnekte, -E anahtar SQL Server'a bağlanırken Windows Kimlik Doğrulamasının kullanıldığını gösterir. Windows Kimlik Doğrulaması kullanılırken, betik dosyasında kullanıcı adı ve şifre saklamaya gerek yoktur. Script dosyasının adı ve yolu switch -i tarafından, çıkış dosyasının adı ise switch tarafından belirlenir -o (bu anahtar kullanıldığında SQL Server'dan çıkan çıktı, konsol yerine bu dosyaya yazılır). Bu sqlcmd program, anahtar kullanarak -v çalışma zamanı Transact-SQL bir scripte script değişkenlerini iletmenize olanak tanır. Bu örnekte, sqlcmd script'teki her örnek $(DistPubServer) , çalıştırmadan önceki değerle N'MyDistributorAndPublisher' değiştirilir.
Uyarı
Anahtar, -X script değişkenlerini devre dışı bırakıyor.
Bir Toplu Dosyada Görevleri Otomatikleştirme
Toplu dosya kullanılarak, replikasyon yönetimi görevleri, replikasyon senkronizasyon görevleri ve diğer görevler aynı toplu dosyada otomatikleştirilebilir. Aşağıdaki toplu dosya, sqlcmd aracını kullanarak abonelik veritabanını bırakıp yeniden oluşturuyor ve merge pull aboneliği ekler. Sonra dosya, yeni aboneliği senkronize etmek için birleştirme ajanını çağırıyor:
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=AdventureWorks
SET SubDb=AdventureWorksReplica
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\130\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
Ortak Çoğaltma Görevlerini Betlemenin
Aşağıda, sistem depolanan prosedürler kullanılarak betiklenebilecek en yaygın çoğaltma görevlerinden bazıları yer almaktadır:
Yayın ve dağıtımın yapılandırılması
Yayıncı ve Dağıtıcı Özelliklerinin Değiştirilmesi
Yayıncılık ve dağıtımın durdurulması
Yayınlar oluşturmak ve makaleleri tanımlamak
Yayınların ve makalelerin silinmesi
Pull aboneliği oluşturma
Pull aboneliğini değiştirmek
Pull aboneliğini silmek
Push aboneliği oluşturma
Push aboneliğini değiştirmek
Push aboneliğini silmek
Pull aboneliğini senkronize etmek