Replication makale serimizin ilk üçünde bilinmesi gereken tüm tanımlara değindik ve sıra replication ile ilgili örneklerimize geldi. Bugünkü makalemizde distribution veritabanının oluşturulmasını ve snapshot publication kullanımını örnekleriyle beraber görüyor olacağız.
Not: Örneklerimize başlamadan önce ekde bulunan CreateSSTestDatabaseOnPublihserAndSubscriber.sql dosyasını çalıştırmamız gerekmektedir.
Örneklerim için kurulu iki tane SQL Server instance kullanacağım.

Resim1: Replication örneklerinde kullanılacak SQL Server veritabanı sunucuları
Yukarıdaki şekilde göründüğü gibi sistem veritabanları içerisinde henüz distribution veritabanı yok. Rollerin ve agentların tanımlarında bahsettiğimiz gibi distribution veritabanı replication işleminin omurgası niteliğinde. Bu nedenle replication işlemi için ilk olarak distribution veritabanını yapılandırmamız gerekiyor.
Distiributor Yapılandırması
Distribution veritabanının yapılandırılması için ilk olarak distributor niteliğindeki sunucuyu seçeceğiz ve onun üzerinde "Configure Distribution" sihirbazını çalıştıracağız. Ben örneğim için Default instance'ı distributor olarak seçiyorum.

Sihirbazın açılmasıyla beraber ilk olarak hangi sunucuyu distributor yapmak istediğim soruluyor .

Daha sonra replication işlemleri için kullanılacak snapshot dosyalarının saklandığı dizini belirleyeceğimiz bölüm geliyor. Varsayılan değer olarak SQL Server kurulumu esnasında gelen replication dizini set edilmiş. Bu değeri istediğimiz gibi değiştirmemiz mümkün. Bu değeri belirlerken replication agent hesaplarının bu dizine ulaşabilmesi gerektiğini unutmamalıyız.

Daha sonraki bölümde distribution veritabanının adının ne olmasına ve nerde tutulacağına karar veriyoruz. Varsayılan olarak distribution veritabanı kurulumda belirlediğimiz data dizini olarak geliyor.

Bir sonraki ekranda olusturduğumuz bu distribution veritabanını kullanacak publisher sunucularını ve distribution veritabanına ne şekillerde bağlanacağını belirliyoruz.


Ve son olarak distribution yapılandırmasını gerçekleştirip yaptığımız işlemlerin TSQL ifadelerini üretiyoruz. Üretilen scripti makalenin ekinde ConfigureDistribution.sql adıyla bulabilirsiniz.

İşlemlerin tamamlanmasıyla beraber sistem veritabanlarının altında distribution adında yeni bir veritabanının eklendiğini görüyoruz.
Snapshot Publication Kurulumu
Distribution yapılandırmasını tamamladıktan sonra artık snapshot replication yapılandırması için bir publication tanımlıyoruz. Bunun için publisher rolündeki sunucunun üzerinde publication tanımlıyoruz.

Karşımıza çıkan sihirbazda ilk olarak hangi veritabanındaki nesnelerden publication yapmak istediğimizi seçiyoruz.

Daha sonra publication tiplerinden snapshot publication seçerek devam ediyoruz.

Sonraki aşamada abonelere yaygınlaştırmak istediğim veritabanı nesnelerini yani article'ları seçiyoruz. Seçilen tabloların içerisinde abonelere yaygınlaştırmak istemediğimiz kolonlar varsa bu aşamada belirlememiz gerekiyor.

Sıradaki ekranda replication sürecinde yaygınlaştırılmayacak verileri filtreliyoruz. Ben bu örnekte herhangi bir filtreleme yapmayacağım.

Sıradaki ekranda snapshot agent için çalışma ayarlarını belirliyoruz.

Bunlardan ilki "Create a snapshot immediately and keep the snapshot available to initialize subscriptions";
Bu özellik ilgili kurulumun tamamlanmasıyla beraber bir snapshot çıkaracak ve saklayacaktır. Bu snapshot sayesinde yeni eklenen tüm aboneler bu snapshot kullanılarak ilk eşitlemelerini yapabilir.
Diğer seçeneğimiz "Schedule the Snapshot Agent to run at the following times" ise snapshot'ın düzenli olarak çıkarılıp abonelere yaygınlaştırılmasını sağlar.
Bir sonraki ekranda Snapshot agent'ın güvenlik ayarlarını yapabiliriz. Bu aşamada iki farklı credential belirlememiz gerekir. Bunlardan ilki snapshot agent'ı çalıştıracak account diğeri ise publication'da belirttiğimiz veritabanına bağlanacak account'dur. Şimdilik örneklerimiz için aşağıdaki gibi bir konfigürasyon yapacağız ve bu konuyu ileriki makalelerde "replication kullanımı için en uygun güvenlik çözümleri" başlığıyla detaylandıracağız.


Ve son olarak tanımladığımız publication'a bir isim vererek işlemleri tamamlıyoruz.


Bu tanımlamaların sonucunda yaygınlaştırabileceğimiz bir snapshot publication oluştu.

Kısaca özet geçersek; ilk olarak distribution yapılandırmasını yaptıktan sonra publication nesnesini oluşturduk. Şimdi ise oluşturduğumuz publication yani yayıncı nesnesini dağıtabileceğimiz aboneleri (Subscription) tanımlayacağız.
Subscription Kurulumu
Subscription kurulumuna başlamak için ilk olarak seçtiğimiz subscriber yani abone sunucuda "New Subscription Wizard" ı başlatıyoruz.


Karşımıza çıkan ilk ekranda hangi yayıncı sunucudan hangi yayını almak istediğimizi belirtiyoruz.

Daha sonra distribution agent'ın nerede çalışacağını belirleyeceğimiz ekrana geçiyoruz. "Replication 3" makalemizde belirtiğimiz gibi distribution agent'ın nerede çalışacağı seçeceğimiz abonelik tipine bağlı. Ben bu örneğim için abonelik tipini "pull subscription" seçiyorum. Bu durumda distribution agent abone sunucu üzerinde çalışacaktır.

Sonraki ekranda yayının abone sunucu üzerinde yaygınlaşmasını istediğimiz veritabanını seçiyoruz.

Sıradaki ekranda distribution agent'ın dağıtıcı ve abone sunucularına ne şekilde bağlantı kuracağını belirtiyoruz. Şimdilik örneklerimiz için aşağıdaki gibi bir konfigürasyon yapacağız ve bu konuyu ilerleyen makalelerde "replication kullanımı için en uygun güvenlik çözümleri" başlığıyla detaylandıracağız.


Sıradaki ekranda yaygınlaştırma işleminin ne sıklıkta yapılacağını belirliyoruz. Burada karşımıza üç farklı seçenek çıkıyor. Bunlardan ilki "Run continuously"; bu özellik agent joblarının sürekli çalışır durumda olmasını sağlıyor. Diğer seçenek olan "Run on demand only"; agent joblarının talep doğrultusunda çalıştırılmasını, son seçenek ise agent joblarının zamanlanmasını sağlıyor.
Not: "Run continuously" seçeneği snapshot publication yaygınlaştırması yapısı gereği uygulanabilir bir özellik değildir.

Son ekranda ise kayıtlı snapshot'u ilk gönderme yani "initialization" işleminin ne zaman başlamasını istediğimizi belirleyebiliyoruz. Immediately seçeneği yapılandırmanın biter bitmez, "At first synchronization" ilk veri eşitleme ihtiyacı oluştuğu zamanki durumu ifade ediyor
Not: "At first synchronization seçeneği snapshot publication yaygınlaştırması yapısı gereği uygulanabilir bir özellik değildir.

Konfigürasyonların tamamlanmasıyla beraber aboneliğimiz oluştu ve sonucunda veri eşitlemesi gerçekleşti.


Replication işleminin gerçekleştiğini görmek için yayıncı ve abone sunucularındaki kayıt sayılarını karşılaştırırsak aşağıdaki çıktı bize replication sürecinin başarıyla gerçekleştiğini gösterecektir.

Bugünkü makalemizde replication işlemlerini başlatabilmemiz için gerekli olan dağıtıcı yapılandırma işleminden, snapshot publication tanımlamasından ve bir abonenin nasıl tanımlanacağından örneklerle bahsettik. Bir sonraki makalemizde transactional replication ve transaction replicationdan türeyen Peer to Peer replication süreçlerinden örneklerle bahsedeceğiz.