Aracılığıyla paylaş


Birleştirme çoğaltması yayınları ve abonelikleri nasıl başlatır?

Birleştirme replikasyonu, verilerin aralarında akabilmesi için hem Yayımcıyı hem de Aboneyi önce başlatmalıdır. Bu makalede, başlatma sırasında gerçekleşen adımlar hakkında bilgi sağlanır.

Yayını başlatma

Aşağıdaki listede, listelenen her saklı yordamı yürütürken veya Yeni Yayın Sihirbazı'nı tamamladıktan sonra gerçekleşen yayın başlatma adımları ayrıntılı olarak verilmiştir. Snapshot Agent bir yayın için ilk kez çalıştırıldıktan sonra ek başlatma adımları gerçekleşir.

  • sp_replicationdboption

    • Yayın veritabanı çoğaltma için işaretlenir. Çoğaltma kaldırılmadığı sürece veritabanı silinemez.

    • Sistem tabloları yayın veritabanına eklenir (veritabanında bir birleştirme yayını yoksa). Sistem tablolarının tam listesi için bu makaledeki "Yayın ve Abonelik Veritabanlarında Oluşturulan Sistem Tabloları" bölümüne bakın.

  • sp_addmergepublication

    • Yayının girdileri sistem tablolarına eklenir.
  • sp_addpublication_snapshot

    • SQL Server Agent sistemine bir Snapshot Agent işi eklenir. İş adı biçimindedir <Publisher>-<PublicationDatabase>-<Publication>-<Integer>.
  • sp_addmergearticle

    • Çoğaltılan her nesne çoğaltma için işaretlenir. İlgili makale tüm yayınlardan bırakılmadığı sürece nesne silinemez.

    • Her makalenin girdileri sistem tablolarına eklenir.

Yayın veritabanı için başlatma işleminin geri kalanı, bir yayın için Snapshot Agent'ın ilk çalıştırması sırasında gerçekleşir. Yayın veritabanı, Snapshot Agent'ın sonraki çalıştırmaları sırasında yeniden başlatılmaz. Yeni Yayın Sihirbazı'nı kullanırsanız, sihirbazı tamamladıktan sonra varsayılan olarak ilk anlık görüntü oluşturulur. Saklı yordamlar kullanıyorsanız aracı görevi çalıştırmanız veya aracıyı doğrudan çalıştırmanız gerekir. Aracıları çalıştırma hakkında daha fazla bilgi için bkz . Çoğaltma Aracısını Başlatma ve Durdurma (SQL Server Management Studio) ve Çoğaltma Aracısı Yürütülebilir Dosyaları Kavramları.

Bir yayın için Anlık Görüntü Aracısı ilk kez çalıştırıldığında:

  • Yayımlanan her tabloya, tabloda zaten rowguid özelliği ayarlanmış bir benzersizleştirici veri türü sütunu yoksa (bu durumda bu sütun kullanılır) ROWGUIDCOL adlı bir sütun eklenir. Sütun rowguid , yayımlanan her tablodaki her satırı benzersiz olarak tanımlamak için kullanılır. Tablo yayından bırakılırsa, rowguid sütun kaldırılır; izleme için mevcut bir sütun kullanıldıysa, sütun kaldırılmaz.

  • Yayımlanan her tablo için yayın veritabanında aşağıdaki nesneler oluşturulur (tüm nesneler şemada dbo oluşturulur):

    • Değişiklikleri izlemek için yayımlanan tablolara tetikleyici ekleme, güncelleştirme tetikleyicileri ve silme tetikleyicileri eklenir. Tetikleyiciler MSmerge_ins_<GUID>, MSmerge_upd_<GUID> ve MSmerge_del_<GUID> biçiminde adlandırılır. GUID değeri, sistem tablosundaki sysmergearticlesmakalenin girdisinden türetilir.

    • Saklı yordamlar, yayımlanan tablolardaki eklemeleri, güncelleştirmeleri ve silmeleri işlemek ve çoğaltmayla ilgili diğer birkaç işlemi gerçekleştirmek için oluşturulur.

    • Görünümler eklemeleri, güncelleştirmeleri, silmeleri ve filtrelemeyi yönetmek için oluşturulur.

    • Çakışma tabloları, çakışma bilgilerini depolamak için oluşturulur. Çakışma tabloları, yayımlanan tabloların şemasıyla eşleşir: Her yayımlanan tablo için bir betik oluşturulur ve ardından bu betik, yayın veritabanında çakışma tablosunu oluşturmak için kullanılır. Çakışma tabloları, biçiminde dbo.MSmerge_conflict_<Publication>_<Article> adlandırılır.

Snapshot Agent her çalıştığında, yayın veritabanındaki her makale için aşağıdaki dosya türleri (karşılık gelen dosya uzantılarıyla) oluşturulur:

  • Şema (.sch)

  • Kısıtlamalar ve dizinler (.dri)

  • Tetikleyiciler (.trg)

  • Sistem tablosu verileri (.sys)

  • Çakışma tabloları (.cft)

  • Veriler (.bcp): parametreli filtreler içeren yayınlar için oluşturulmaz.

    Yayında parametreli filtre kullanılmıyorsa, anlık görüntü bir dosya kümesindeki yayımlanan tabloların .bcp verilerini içerir. Yayın parametreli filtreler kullanıyorsa (birleştirme yayınları için tipiktir), ilk anlık görüntü veri içermez. Veriler, abonenin bölümü için bir anlık görüntü kullanılarak sağlanır ve bu, sonraki bölümde açıklanmıştır.

Aboneliği başlatma

Abonelik için Birleştirme Aracısı çalıştırıldığında ve ilk anlık görüntüyü abonelik veritabanına kopyaladığında her abonelik başlatılır. Çoğaltılan nesnelerdeki şemaya ve verilere ek olarak, anlık görüntü yayın veritabanında bulunan sistem tablolarını, görünümleri, tetikleyicileri ve saklı yordamları içerir. Bir veya iki ek sistem tablosu da abonelik veritabanına kopyalanır. Sistem tablolarının tam listesi için bu makaledeki Yayın ve abonelik veritabanlarında oluşturulan Sistem tabloları bölümüne bakın. Bir abonelik yeniden başlatıldıysa, çoğaltılan tüm nesneler ve çoğaltma sistemi nesneleri üzerine yazılır.

Yayın veritabanındaki tablolardan hiçbiri parametreli filtreler kullanmıyorsa, her aboneye aynı yayın anlık görüntüsü kopyalanır. Bir veya daha fazla parametreli filtre kullanılırsa, her aboneliğin başlatılma şekli aşağıdaki mantık tarafından yönetilir:

  • Anlık görüntü konumu komut satırındaki Birleştirme Aracısı'na sağlanmışsa:

    • Bu konumdan anlık görüntüyü uygulayın.
  • Eğer anlık görüntü önceden oluşturulmuşsa:

    • Yayın veritabanından anlık görüntünün konumunu MSmerge_dynamic_snapshots alın ve anlık görüntüyü bu konumdan uygulayın.
  • Yayın abonelerin anlık görüntüleri başlatmasına izin veriyorsa, aksi takdirde:

    • Aynı bölüme sahip başka bir Abone için zaten bir anlık görüntü oluşturulduysa, bu anlık görüntüyü Aboneye uygulayın.

    • Aksi halde aboneye bir anlık görüntü oluşturun ve uygulayın.

  • Aksi takdirde, yayındaki tablolara karşı SELECT ifadelerini kullanarak Abone'yi başlatın. Bu yaklaşım Abonenin bölümü için anlık görüntü kullanmaktan daha yavaştır.

Anlık görüntü aktarımı herhangi bir noktada kesilirse otomatik olarak devam eder ve zaten tamamen aktarılmış olan dosyaları yeniden göndermez. Snapshot Agent'ın teslim birimi, her yayın makalesinin bcp dosyasıdır, bu nedenle kısmen teslim edilen dosyaların tamamen yeniden teslim edilmesi gerekir. Ancak anlık görüntünün devam ettirilmesi, iletilen veri miktarını önemli ölçüde azaltabilir ve bağlantı güvenilir olmasa bile anlık görüntü tesliminin zamanında teslim edilmesini sağlayabilir. Anlık görüntüler oluşturma hakkında daha fazla bilgi için bkz. Parametreli Filtreler - Parametreli Satır Filtreleri.

Anlık görüntü konumu

Anlık görüntü konumu şunlara bağlıdır: varsayılan veya alternatif anlık görüntü konumu için belirtilen yol; yayında anlık görüntü klasörü için UNC yolu veya FTP paylaşımı kullanılıp kullanılmadığı; ve yayının parametreli filtreler kullanıp kullanmadığı. Bu örneklerde, anlık görüntü klasörünün konumunun: olduğunu varsayalım: \\<MyComputer>\<MyFolder>

  • Yayın UNC kullanıyorsa, yolun ilk bölümü şudur: \\<MyComputer>\<MyFolder>\unc\. FTP kullanıyorsa, bu \\<MyComputer>\<MyFolder>\ftp\’dir.

  • Yayın UNC kullanıyorsa ve parametreli filtreler kullanmıyorsa, yol şudur:\\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>

  • Yayın UNC kullanıyorsa ve parametreli filtreler kullanıyorsa, konum anlık görüntü klasörü yolunu ve yayının parametreli satır filtreleme ölçütlerini temel alır. Örneğin, makale HOST_NAME() işlevi kullanılarak filtrelenmişse ve bölümün HOST_NAME() değeri SalesLaptop ise, o bölümün anlık görüntüsü için yol \\<MyComputer>\<MyFolder>\unc\<Publisher><Publicationdb><publication>\SalesLaptop_12 olur; burada 12, bölüm için dahili olarak kullanılan kimliktir.

Yayın ve abonelik veritabanlarında oluşturulan sistem tabloları

Yayın veritabanında ve her abonelik veritabanında aşağıdaki tablolar oluşturulur.

Tablo Açıklama
MSdynamicsnapshotjobs Parametreli filtrelere sahip yayınlar için snapshot görevleri hakkında bilgi içerir.
MSdynamicsnapshotviews Anlık Görüntü Aracısı tarafından oluşturulan tüm geçici anlık görüntü görünümlerini izler. SQL Server Aracısı'nın veya Anlık Görüntü Aracısı'nın anormal bir şekilde kapatılması durumunda görünümleri temizlemek için sistem tarafından kullanılır.
MSmerge_altsyncpartners Yayımcı için geçerli eşitleme ortaklarının kim olduğu ilişkisini izler.
MSmerge_articlehistory Birleştirme Aracısı eşitleme oturumu sırasında makalelerde yapılan değişiklikleri, değişikliklerin yapıldığı her makale için bir satırla izler.
MSmerge_conflicts_info Aboneliği birleştirme yayını (merge publication) ile senkronize ederken oluşan çakışmaları izler.
MSmerge_contents Yayımlandıktan sonra geçerli veritabanında değiştirilen her satır için bir satır içerir. Bu tablo, değiştirilen satırları belirlemek için birleştirme işlemi tarafından kullanılır.
MSmerge_current_partition_mappings Belirli bir değiştirilen satırın ait olduğu her bölüm için bir satır içerir.
MSmerge_dynamic_snapshots Birleştirme yayını için tanımlanan her bölüm için anlık görüntünün konumunu izler.
MSmerge_errorlineage Abonede silinmiş, ancak silme işlemi Publisher'a aktarılmamış olan satırları içerir.
MSmerge_generation_partition_mappings Belirli bir neslin belirli bir bölümle ilgili değişiklikler içerip içermediğini izler.
MSmerge_genhistory Her nesil için bir satır içerir. Nesil, yayımcıya veya aboneye teslim edilen bir değişiklik koleksiyonudur. Birleştirme Aracısı her çalıştığında nesiller kapatılır ; bir veritabanındaki sonraki değişiklikler bir veya daha fazla açık nesile eklenir.
MSmerge_history Önceki Birleştirme Aracı iş oturumlarının sonuçlarının ayrıntılı açıklamalarını içeren geçmiş satırları bulunur.
MSmerge_identity_range Çoğaltmanın aralık atamalarını otomatik olarak yönettiği yayınlara abonelikler için kimlik sütunlarına atanan sayısal aralıkları izler.
MSmerge_metadataaction_request Gerekli olan her telafi eylemi için bir satır içerir. Değişiklik başka bir düğümde başarısız olduysa, bir düğümdeki değişikliği geri almak için telafi eylemi kullanılır.
MSmerge_partition_groups Belirli bir veritabanındaki her önceden derlenmiş bölüm için bir satır içerir.
MSmerge_past_partition_mappings Belirli bir değiştirilen satırın ait olduğu ancak artık ait olmadığı her bölüm için bir satır içerir.
MSmerge_replinfo Her abonelik için bir satır içerir. Bu tablo, gönderilen ve alınan nesiller hakkındaki iç bilgileri izler.
MSmerge_sessions Önceki Birleştirme Aracısı iş oturumlarının sonuçlarını içeren geçmiş satırlarını içerir.
MSmerge_settingshistory Makale ve yayın özelliklerinde yapılan değişikliklerin geçmişini ve yapılan her değişiklik için bir satır içerir.
MSmerge_tombstone Silinen satırlar hakkında bilgi içerir ve silmelerin diğer Abonelere yayılmasına izin verir.
MSrepl_errors Aracı hataları hakkında ayrıntılı bilgi içerir.
sysmergearticles Her birleştirme makalesi için bir satır içerir.
sysmergepartitioninfo Her makale için bir satır içeren her makalenin bölümleri hakkında bilgi içerir.
sysmergepartitioninfoview Tablo makaleleri için bölümleme bilgilerini içerir.
sysmergepublications Her birleştirme yayını için bir satır içerir.
sysmergeschemaarticles Saklı yordamlar gibi yalnızca şema makalelerini izler.
sysmergeschemachange Snapshot Agent tarafından oluşturulan yayımlanan makaleler hakkında bilgi içerir.
sysmergesubscriptions Her Abone için bir satır içerir.
sysmergealtkümefiltreleri Bölümlenmiş makaleler için birleştirme filtresi bilgilerini içerir.

Buna ek olarak, MSsnapshotdeliveryprogress tablo her abonelik veritabanında oluşturulur ve MSsubscription_properties tablo çekme aboneliği kullanan her abonelik veritabanında oluşturulur:

Tablo Açıklama
MSanlıkgörüntüteslimatilerlemesi Anlık görüntü uygulanırken Aboneye başarıyla teslim edilen dosyaları izler. Bu veriler, Birleştirme Aracısı'nın oturum sırasında tüm dosyaları teslim etmede başarısız olması durumunda dosyaların teslimini sürdürmek için kullanılır.
MSsubscription_properties Abonede çoğaltma aracılarını çalıştırmak için gereken parametre bilgilerini içerir