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.
Bir yayın veya abonelik başlatıldıktan sonra, birleştirilmiş çoğaltma yayımlanan tablolardaki verilerdeki tüm değişiklikleri izler ve numaralandırır. Değişiklikler, çoğaltmanın her yayımlanan tablo için oluşturduğu tetikleyiciler ve yayın ile abonelik veritabanlarındaki sistem tabloları aracılığıyla izlenir. Bu çoğaltma sistemi tabloları, hangi değişikliklerin yayılması gerektiğini gösteren meta verilerle doldurulur. Eşitleme sırasında Birleştirme Aracısı çalıştırıldığında, değişiklikler aracı tarafından numaralandırılır ve gerektiğinde Yayımcı ve Aboneye uygulanır.
Değişiklik izleme
Birleştirme çoğaltması, yayımlanan tüm tablolardaki değişiklikleri izlemek için aşağıdaki tetikleyicileri ve sistem tablolarını kullanır:
-
MSmerge_ins_<GUID>: tetikleyici ekle (bu tetikleyicinin GUID değeri ve diğer tetikleyicilerin GUID değerlerisysmergearticles'den türetilmiştir) -
MSmerge_upd_<GUID>: güncelleştirme tetikleyicisi -
MSmerge_del_<GUID>: delete tetikleyicisi MSmerge_contentsMSmerge_tombstoneMSmerge_genhistory
Birleştirme çoğaltması, filtrelenmiş tablolardaki değişiklikleri izlemek için aşağıdaki ek sistem tablolarını kullanır:
MSmerge_partition_groupsMSmerge_current_partition_mappingsMSmerge_past_partition_mappings
Uyarı
Listelenen sistem tabloları, veritabanındaki tüm birleştirme yayınları ve abonelikleri tarafından kullanılır; örneğin, bir yayın veritabanında birden fazla yayınınız varsa, MSmerge_contents tüm yayınlardaki makalelerden satırlar içerir.
Filtrelenmemiş tablolar için değişiklik izleme
Sistem tabloları
Filtrelenmemiş ve filtrelenmiş tablolar için kullanılan sistem tabloları aşağıdaki meta verileri içerir:
MSmerge_contentsveritabanındaki yayımlanmış bir tabloya eklenen veya güncelleştirilen her satır için bir satır içerir.MSmerge_tombstoneveritabanındaki yayımlanmış bir tablodan silinen her satır için bir satır içerir.MSmerge_genhistoryher 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.
Değişiklik izleme süreci
Filtrelenmemiş tüm tablolar için aşağıdaki değişiklik izleme işlemi kullanılır:
Yayımlanmış bir tabloda ekleme veya güncelleştirme gerçekleştiğinde,
MSmerge_ins_<GUID>veyaMSmerge_upd_<GUID>tetikleyicisi tetikler ve sistem tablosunaMSmerge_contentsbir satır eklenir.rowguidsütunuMSmerge_contents, eklenen veya güncelleştirilen satırın GUID'sini içerir. Bu, eşitlemenin bir sonraki kez gerçekleştiğinde, kullanıcı tablosuna karşılık gelen eklenen veya güncelleştirilen satırın Yayımcıya veya Abonelere gönderilmesi gerektiğini belirtir. Kullanıcı tablosundaki bir satırda sonraki güncelleştirmeler gerçekleşirse, içindekiMSmerge_contentssatır bu durumu yansıtacak şekilde güncelleştirilir.Yayımlanan tabloda silme işlemi gerçekleştiğinde
MSmerge_del_<GUID>tetikleyici tetikler ve sistem tablosunaMSmerge_tombstonebir satır eklenir.rowguidsütunuMSmerge_tombstonesilinen satırın GUID'sini içerir. Bu, eşitlemenin bir sonraki kez gerçekleştiğinde, kullanıcı tablosundaki ilgili silinen satır için Yayımcıya veya Abonelere bir silme gönderilmesi gerektiğini belirtir. Silinen satıraMSmerge_contentsiçinde başvuruluyorsa (çünkü son eşitlemeden sonra eklendi veya güncellendi), satırMSmerge_contents'den silinir.
Filtrelenmiş tablolar için değişiklik izleme
Sistem tabloları
Önceki bölümde açıklanan sistem tablolarına ek olarak, yayın veritabanındaki üç tablo filtrelenmiş tablolardaki değişiklikleri izlemeye yönelik meta veriler içerir:
MSmerge_partition_groupsyayında tanımlanan her bölüm için bir satır içerir. Bölümler şöyle olabilir:Yayın Özellikleri iletişim kutusunun veya Veri Bölümleri sayfası kullanılarak
sp_addmergepartitionaçıkça tanımlanır.Abone henüz içinde
MSmerge_partition_groupsgirişi olmayan bir bölüm gerektiriyorsa Abone eşitlendiğinde otomatik olarak oluşturulur.
MSmerge_current_partition_mappingsveMSmerge_partition_groupsiçindekiMSmerge_contentsher benzersiz satır bileşimi için bir satır içerir. Örneğin, kullanıcı tablosundaki bir satır iki bölüme aitse ve satır güncelleştirildiyse, güncelleştirmeyi yansıtacak şekilde bir satır eklenirMSmerge_contentsve güncelleştirilen satırın iki bölüme ait olduğunu belirtmek için içine iki satır eklenirMSmerge_current_partition_mappings.MSmerge_past_partition_mappingsartık belirli bir bölüme ait olmayan her satır için bir satır içerir. Bir satır, eğer şu şartlardan birine uyuyorsa, bir bölümden dışarı taşınır:Satır silinir. Kullanıcı tablosundan bir satır silinirse, içine bir satır eklenir
MSmerge_tombstoneve içine bir veya daha fazla satır eklenirMSmerge_past_partition_mappings.Filtreleme için kullanılan sütundaki değer değişti. Örneğin, bir parametreli filtre, bir şirketin merkezinin bulunduğu eyaleti temel alıyorsa ve şirket taşınırsa, şirketin kaydı (ve diğer tablolardaki ilgili kayıtlar), bir satış görevlisinin veri bölümünden başka bir satış görevlisinin veri bölümüne taşınabilir. Bir satır artık bir parçalamaya ait olmayacak şekilde güncellenirse,
MSmerge_contentsiçine bir satır eklenir veya güncellenir veMSmerge_past_partition_mappingsiçine bir veya daha fazla satır eklenir.
Uyarı
Bölüm başına bir aboneliğe sahip (parametresi için değeri3) eşitlenmeyen sp_addmergearticlebölümler kullanılırsa, sistem tabloları MSmerge_current_partition_mappings kullanılır ve MSmerge_past_partition_mappings satırların bölüm eşlemelerini izlemek için @partition_options kullanılmaz, çünkü her satır yalnızca bir bölüme aittir ve yalnızca bir Abonede değiştirilebilir.
Değişiklik takip süreci
Filtrelenmemiş tablolar için daha önce açıklanan işlem ( filtrelenmemiş tablolar için değişiklik izleme bölümünde) filtrelenmiş tablolar için de kullanılır ve aşağıdaki eklemeler yapılır:
Yayımlanan bir tabloya ekleme yapıldığında, güncelleştirilen veya içine eklenen
MSmerge_contentsverilere ek olarak, satırın ait olduğu her bölüm için bir bölüm eşlemesi eklenirMSmerge_current_partition_mappings.Yayımlanan bir tabloda güncelleştirme gerçekleştiğinde, güncellenen veya
MSmerge_contentsiçine eklenen verilere ek olarak, satırın ait olduğu her bölüm içinMSmerge_current_partition_mappings'te bir bölüm eşlemesi yoksa bir tane eklenir. Güncelleştirme bir satırın bir bölümden diğerine taşınmasıyla sonuçlanırsa,MSmerge_current_partition_mappingsiçinde bir satır güncellenir veMSmerge_past_partition_mappingsiçine bir satır eklenir.Yayımlanan bir tabloda bir silme işlemi gerçekleştiğinde, bir satır
MSmerge_tombstone'a eklenir ve bir satırMSmerge_current_partition_mappings'den silinir ve bir satırMSmerge_past_partition_mappings'ye eklenir.
Numaralandırmayı değiştir
Sistem tabloları ve yordamları
Birleştirme Aracısı çalıştığında, değişiklikler birkaç sistem tablosu ve saklı yordam kullanılarak numaralandırılır:
MSmerge_genhistoryher 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.sysmergesubscriptions, aboneliklerle ilgili bilgileri içerir; bu bilgiler, bir düğümün gönderdiği ve aldığı son değişiklik sürümlerinin kaydını da kapsar. Yayın veritabanında, bu tablo Yayımcı için bir satır ve her abone için bir satır içerir. Abonelik veritabanında, bu tablo genellikle Abone için bir satır ve Yayımcı için bir satır içerir.MSmerge_generation_partition_mappingsyalnızca filtrelenmiş tablolar için kullanılır ve belirli bir neslin belirli bir bölümle ilgili değişiklikleri içerip içermediğini kaydeder. Yayın veritabanındaki bu tablo,MSmerge_genhistoryveMSmerge_partition_groupsiçindeki her benzersiz satır bileşimi için bir satır içerir.sp_MSmakegenerationnumaralandırma işleminin başında tüm açık generasyonları kapatır.sp_MSenumchangestablolar için değişiklikleri numaralandırır (ile başlayansp_MSenumchangesadlara sahip çeşitli ilgili yordamlar da bu işlemde kullanılır).sp_MSgetmetadatabir düğümdeki bir değişikliğin başka bir düğüme ekleme, güncelleştirme veya silme olarak uygulanması gerekip gerekmediğini belirler.
Numaralandırma işlemini değiştirme
Değişiklik numaralandırması sırasında aşağıdaki işlem gerçekleşir:
Sistem yordamı
sp_MSmakegenerationşu şekilde adlandırılır:Filtrelenmiş ve filtrelenmemiş tablolar için, bu yordam
MSmerge_genhistoryiçinde başvurulan tüm açık nesilleri kapatır (kapalı nesillerin1veya2değerine sahip olduğu sütungenstatus'dir).Filtrelenmiş tablolar için bu yordam sistem tablosunu
MSmerge_generation_partition_mappingsdoldurur. Bir nesil bir bölümle ilgili bir veya daha fazla değişiklik içeriyorsa, sistem tablosuna bir satır eklenir. Bir nesil belirli bir bölümle ilgili herhangi bir değişiklik içermiyorsa, içine bir satır eklenmezMSmerge_generation_partition_mappingsve bu bölümü alan aboneler için değişiklikler numaralandırılamaz.
Saklı yordam
sp_MSenumchangesve ilişkili yordamlar çağrılır. Bu yordamlar, eşitlemenin son oluştuğu zamandan bu yana gerçekleşen değişiklikleri numaralandırır:Prosedürler, önce, tabloda
sysmergesubscriptionssütunlarına göre,sentgen(son nesil gönderildi) verecgen(alınan son nesil), numaralandırmanın başlatıldığı nesli belirler.Örneğin, belirli bir Abone için hangi nesil değişikliklerinin numaralandırılacağı belirlenirken,
sentgenAbone için (yayın veritabanında depolanır) verecgenAbone için (abonelik veritabanında depolanır) karşılaştırılır. Değerler aynıysa (Yayımcıdan gönderilen son neslin Abone tarafından başarıyla alındığını gösterir), değişiklikler içindekiMSmerge_genhistoryyeni nesilden başlayarak numaralandırılır. Değerler aynı değilse, gerekli tüm değişikliklerin gönderilmesini sağlamak için iki değerin alt kısmı kullanılır.Ardından prosedürler değişiklikleri numaralandırır.
Filtrelenmemiş tablolar için,
sentgenya darecgenişleminden sonraki nesillerde yer alan tüm değişiklikler numaralandırılır:MSmerge_genhistory,MSmerge_contentsile birleştirilir veMSmerge_tombstone, hangi değişikliklerin gönderilmesi gerektiğini belirler.Filtrelenmiş tablolar için,
MSmerge_generation_partition_mappings,MSmerge_current_partition_mappingsveMSmerge_contentsile, ayrıcaMSmerge_past_partition_mappingsveMSmerge_tombstoneile birleştirilerek abonenin aldığı bölüm için hangi değişikliklerin uygun olduğunu belirler.
Bir değişikliğin ekleme, güncelleştirme veya silme olarak uygulanması gerekip gerekmediğini belirlemek için saklı yordam
sp_MSgetmetadataçağrılır. Bu noktada çakışma algılama ve çözümleme gerçekleştirilir; Daha fazla bilgi için bkz. Birleştirme çoğaltması çakışmaları nasıl algılar ve çözümler.
İlgili içerik
- Birleştirme çoğaltması
- MSmerge_contents (Transact-SQL)
- MSmerge_current_partition_mappings
- MSmerge_generation_partition_mappings (Transact-SQL)
- MSmerge_genhistory (Transact-SQL)
- MSmerge_partition_groups (Transact-SQL)
- MSmerge_past_partition_mappings (Transact-SQL)
- MSmerge_tombstone (Transact-SQL)
- sp_addmergearticle (Transact-SQL)
- sp_addmergepartition (Transact-SQL)
- sysmergearticles (Transact-SQL)
- sysmergesubscriptions (Transact-SQL)
- Birleştirme Filtreleri
- Parametreli Filtreler - Parametreli Satır Filtreleri