Merge publication ile ilgili bu temel bilgilere değindikten sonra kurulum ile örneklerimize başlayalım.
Merge Publication Kurulumu
Not: Örneklerimizi yapabilmemiz için yayıncı ve abone sunucumuzda aşağıdaki scriptleri çalıştırmamız gerekmektedir.
create database MergeTest
go
use MergeTest
go
if exists(select top 1 1 from sys.tables where name='MergeTestTable')
drop table MergeTestTable
go
create table MergeTestTable
(ID int primary key not null,
Name varchar(40),
SurName varchar(40),
RecordDate datetime default(getdate())
)
Yayıncı sunucumuzda Replication klasörünün üzerinde "New Publication" düğmesine basarak kuruluma başlıyoruz.

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

Daha sonra publication tiplerinden merge publication tipini seçiyoruz.

Sonraki ekranda yapmakta olduğumuz publication nesnesini SQL Server'ın hangi versiyonlarına yaygınlaştırmak istediğimizi belirtiyoruz. Bildiğiniz gibi SQL Server 2008 öncesinde desteklenen veri tiplerinden bazıları (date,filestrem vb.) daha alt versionlarda desteklenmemektedir. Bu sebeple bu tür veriler içeren nesneler merge publication ile SQL Server 2005 ve alt versiyonlarına yaygınlaştırılamazlar. Biz örneğimizde SQL Server 2008 ve üst versioynlarına yaygınlaştırma yapmak üzere bir publication tanımlayacağız.

Sonraki aşamada article'ları seçerek abonelere yaygınlaştırmak istediğimiz veritabanı nesnelerini belirliyoruz. Abonelere yaygınlaştırmak istemediğiz kolonları da bu aşamada belirlememiz gerekiyor.

Bir sonraki ekranda önemli bir uyarı ile karşılaşıyoruz. Uyarı seçtiğimiz tablolara uniqueidentifier bir kolon ekleneceğini belirtiyor. Bu uyarı muhakkak dikkate alınmalıdır ve ilgili veritabanı uygulamaları bu değişiklik için analiz edilmelidir.

Sıradaki ekranda replication sürecinde yaygınlaştırılmayacak verileri filtreliyoruz. Biz bu örneğimizde herhangi bir filtre uygulamayacağız.

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

Bunlardan ilki "Create a snapshot immediately and keep the snapshot available to initialize subscriptions"; Bu özellik sayesinde ilgili kurulumun tamamlanmasıyla beraber bir snapshot çıkacak ve saklanacaktır. Bu snapshot sayesinde yeni eklenen tüm aboneler bu snapshot'ı kullanarak ilk eşitlemelerini yapabiceklerdir.
Diğer seçenek "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.
Sıradaki ekranda Snapshot agent'ın güvenlik ayarlarını yapmamız gerekiyor. Bu aşamada iki farklı credential belirlememiz gerekir. Bunlardan ilki snapshot agent'ı çalıştıracak account diğeri ise publicationda 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 isim vererek işlemleri tamamlıyoruz.


Bu işlemlerin sonucunda yaygınlaştırabileceğimiz bir merge publication oluştu.

İlk olarak publication nesnesini oluşturduk. Şimdi sırada oluşturduğumuz publication yani yayıncı nesnesini dağıtabileceğimiz bir abone yapmaya geldi.
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 nerde çalışacağını belirleyeceğiz ekrana geçiyoruz. "Replication 3" makalemizde belirtiğimiz gibi distribution agent'ın nerede çalışacağı seçeceğimiz abonelik tipine bağlı. Biz bu örnekte abonelik tipini "pull subscription" seçiyoruz. 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 merge 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 ileriki 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. Burda karşımıza üç farklı seçenek çıkıyor. Bunlardan ilki "Run continuously"; bu özellik agent joblarının sürekli çalışır durumda olması 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.

Son ekranda ise tüm datayı 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

Sıradaki ekranda abone tipini seçmemiz gerekiyor. Abone tipi aboneler arasında önceliği belirlememiz için kullanılmaktadır. Merge publication çift yönlü veri eşitlemesi kapasitesinden dolayı kazı çakışmalara sebep olur. Örneğin iki farklı sunucudan bir kayıt farklı değerlerle değiştirildiği taktirde bir çakışma gerçekleşecektir. Bu çakışma yayıncı ile abone arasında olduğu durumda yayıncı her zaman kazanır. Fakat bu çakışma iki abone arasında gerçekleşirse server tipindeki merge publication aboneleri kazanır. Her iki aboneninde server tipinde abone olması durumunda öncelik değeri en yüksek olan abone kazanır.

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ıyoruz.

Şimdi ters yönlü veri eşitlemesini gözlemlemek için abone sunucuya kayıt girişi yapalım ve bu kayıtların yaygınlaştığını replication monitor aracı ile gözlemleyelim.
--subscription sunucudan girilecek kayıt
insert into MergeTest.dbo.MergeTestTable(ID,Name,SurName,RecordDate)
values(10000,'Aboneden','Insert',GETDATE())
Replication Monitor aracını açmak için monitor etmek istediğimiz publication üzerinde sağ tuş menüsünden "Replication Monitor" düğmesine basıyoruz.

Karşımıza çıkan ekran replication sürecinin genel durumu hakkında bize temel bilgiler verecektir. Ekrandan görüldüğü üzere Merge publication veri eşitleme sürecinde.

Detaylara bakacak olursak;

Yayıncıya yüklenen ve aboneden indirilen verilerin ayrıntılarını ve kayıt çakışması ile ilgili temel bilgileri elde edebiliyoruz.

Bugünkü makalemizde merge publication sürecini ve kurulumundan bahsettik. Bir sonraki makalemizde merge publication ile veri eşitleyen yayıncı ve aboneler arasında oluşabilecek veri çakışmalarından ve çözüm yöntemlerinden bahsedeceğiz.