Birleştirme makaleleri işlem sırasını belirtme
Beginning with Microsoft SQL Server 2005, it is possible to override the default order of article processing for merge publications.Başvuru tanımlarsanız, bu, örneğin yararlıdır bütünlük tetikler ve bu tetikleyici üzerinden belirli bir sırada harekete gerekir.
Makaleleri işlem sırasını belirtmek için
- Çoğaltma Transact-SQL programlama: Nasıl Yapılır: Birleştirme tablo makaleleri (çoğaltma Transact-SQL programlama) işlem sırasını belirtme
İşlem sırası nasıl belirlenir
Birleştirme eşitleme sırasında makaleleri nesneleri arasındaki bağımlılıklar için gereken sırada işlenen varsayılan olarak, bildirim dahil olan bilgi bütünlük (DRI) kısıtlamaları temel tablolar üzerinde tanımlanmış.İşlem değişiklikleri tablo sıralama ve sonra değişiklikleri uygulama içerir.DRI yok var, ancak tablo makaleler arasında birleştirmek filtreleri veya mantıksal kayıtlar var, makaleleri filtreler ve mantıksal kayıtlar tarafından gereken sırada işlenir.Makaleleri değil ilgili diğer bir makaleyi birleştirmek filtreleri, mantıksal kayıtlar, DRI ile veya başka bağımlılıkları makale takma uyarınca işlenensysmergearticles (Transact-SQL)Sistem tablo.
Düşünün tablo s içeren yayınSalesOrderHeaderSalesOrderDetail ile birincil anahtar sütun SalesOrderIDSalesOrderHeader tablo ve bir karşılık gelen yabancı anahtar sütununa SalesOrderIDSalesOrderDetail biçiminde tablo.Birleştirme kopyalamayı engelleyen yeni bir satır ekleyerek yabancı anahtar ihlali, eşitleme sırasındaSalesOrderHeader eklemeden önce SalesOrderDetailsatırlarda ilişkilendirilen.Benzer şekilde, satırları silinir gelenSalesOrderDetail satırın ilişkili önce SalesOrderHeader .
Ancak, bazı uygulamalarda veritabanı tetikleri, üzerinden veya uygulama düzeyinde yerine DRI tutarlılığı uygulanır.Yukarıda, DRI yerine, yayına verilenSalesOrderDetail tabloyu vermeden önce bir ekleme. SalesOrderHeader tablosundaki ilgili satırın mevcut sağlar bir INSERT tetikleyicisi olabilir. SalesOrderHeader vardır ilişkili satır SalesOrderDetail vermeden önce bir silme. sağlar bir silme tetiği olabilir. Birleştirme çoğaltma ne tetikleyici sonucu bu kadar olacaktır belirleyemediğinden makaleleri işlem sırasını belirleyen harekete, hesap Tetikleyiciler almaz.Benzer şekilde, uygulamayı tanımlanan hesap kısıtlamaları ile çoğaltma alınamıyor düzey.
Bilgi tutarlılığı tetikleyici veya uygulama düzeyinde korunur, makaleleri işleneceğini sırasını belirtmeniz gerekir.Tetikleyici içeren örnekte, belirtirsinizSalesOrderHeader makale sipariş temel alması nedeniyle ekleme sırası. önce SalesOrderDetail tablo işleneceğini Birleştirme çoğaltma sipariş silme için otomatik olarak ters işlem uygular.Merge Agent bir kısıtlama ihlali meydana gelirse makaleleri işlemeye devam eder birleştirme çoğaltma makale sıralama olmadan başarısız olacaktır, çünkü değil; sonra diğer işlenen sonra başarısız olan işlemleri yeniden dener.Makale sırasını belirterek yeniden deneme ve bunlarla ilgili ek bir işlem sadece önler.Yanlış sipariş (örneğin, bir üstbilgi kaydı önce işlenen ayrıntı kayıtları neden) belirtirseniz, birleştirme çoğaltma, başarılı oluncaya kadar işlem yeniden denenecek.