Veri abonelerine teslim değil
Veri abonelerine teslim değil, görünüyorsa, geniş iki nedeni vardır:
Verileri süzme nedeniyle, Aracısı sorunu veya başka bir çoğaltma hatası uygulanmıyor.
Uygulandıktan sonra veri Abone tarafında siliniyor.
Açıklama
Veri abonelerine teslim değil olası nedeni vardır:
Tablo filtre ve belirli bir abone için teslim etmek için hiçbir değişiklik yoktur.
Bir veya daha fazla aracıları çalışmıyorsa veya bir hata ile başarısız oluyor.
Bir işlemsel abonelik anlık görüntü başlatıldı ve yayın oluşturulduğundan bu yana değişiklikleri yayımcı üzerinde olmuştur.
Çoğaltma, saklı yordam bir işlemsel yayım yürütme abone adresindeki farklı sonuçlar üretir.
INSERT saklı yordam tarafından kullanılan işlem makalede karşılanmaması bir koşul içerir.
Bir kullanıcı, bir çoğaltma komut dosyası veya başka bir uygulama tarafından veriler silinir.
Tetikleyici tarafından veriler silinir veya tetikleyici rollback deyim içerir.
Kullanıcı eylemi
Veri abonelerine teslim değil neden Tanıla denemeden önce doğrulaması kullanmanızı öneririz veya tablediff yardımcı programı satır eksik olduğunu doğrulamak için:
Dağıtım Aracısı veya Birleştirme Aracısı çalıştırabilir, veri ikili sağlama toplamı doğrulaması çalıştırarak eksik olup olmadığını belirleyin.Satır sayısı doğrulama de kullanabilirsiniz, ancak bu yöntem farklılıkları verilerin içeriğini göster.Daha fazla bilgi için bkz: Çoğaltılmış veri doğrulama.
Dağıtım Aracısı veya Birleştirme Aracısı çalışmıyorsa, verileri çalıştırarak eksik olup olmadığını tablediff yardımcı programı.Çoğaltılan tablolarda bu yardımcı programı kullanma hakkında daha fazla bilgi için bkz: Nasıl yapılır: Karşılaştır tablolar farkları (çoğaltma programlama) yinelenmiş.
Eksilen verilerin nedenini adresleme
Aşağıdaki eylemleri "Açıklama" listelenen nedenlerden adresi Bölüm:
Tablo filtre ve belirli bir abone için teslim etmek için hiçbir değişiklik yoktur.
Yayın için filtre ölçütü karşılamadığı için Abone tarafında eksik satırları çoğaltılmamış olduğunu mümkündür.Her türlü çoğaltma statik filtreler desteklemek ve birleştirme çoğaltma de destekler filtreleri ve birleşim filtreleri parametreli.Daha fazla bilgi için bkz: Veri süzme yayımlandı.Bir veya daha fazla makaleleri de yayın olan filtre uygulanmış, aşağıdaki yordamları yürütmek ve filtre yan tümce tümce tümce değerini doğrulayın:
Anlık görüntü ve işlem yayınlar için statik filtre: filter_clause tarafından döndürülen sütun sp_helparticle (Transact-sql).
Statik filtre veya birleştirme yayımları için parametreli filtre: subset_filterclause tarafından döndürülen sütun sp_helpmergearticle (Transact-sql).
Birleştirme yayımları için filtre katılın: join_filterclause tarafından döndürülen sütun sp_helpmergefilter (Transact-sql).
Filtre yan tümce tümce tümce herhangi biri eksik satırları süzme ölçütlerine olup olmadığını belirlemek için kullanın.Örneğin, filtre yan tümce tümce tümce karşı yürütmesine tablo adresindeki yayımcı ve döndürülen verileri veri abone adresindeki eşleşip eşleşmediğini belirlemek.
Bir veya daha fazla aracıları çalışmıyorsa veya bir hatayla başarısız oluyor:
Bir abonelik başlatılıyor, anlık görüntü Aracısı yayın için dağıtım aracısını veya Birleştirme Aracısı ile anlık uygulamak çalışmadan önce tamamlandığını bildiren emin olun.Anlık görüntü tamamlanmadan uygulamaya çalışırsanız, aşağıdaki hata oluşur: " ilk anlık görüntü Yayın '% s' için henüz kullanılabilir değil."
İçin işlem çoğaltma, Dağıtım Aracısı ve Günlük Okuyucu Aracısı çalıştığını; emin olun mektup birleştirme için çoğaltma, Birleştirme Aracısı çalıştığından emin olmak.Bu aracılar başlatma hakkında daha fazla bilgi için bkz: Nasıl yapılır: Başlat ve Durdur çoğaltma aracısı (SQL Server Management Studio'yu) ve Çoğaltma aracısı Yürütülebilirler kavramları.
Bir aracı bir hata nedeniyle durursa, temel nedeni belirlemek aracının hata ayrıntılarını görüntüleyin.Anlık Görüntü Aracısı ve Günlük Okuyucu Aracısı için hata ayrıntılarını görüntüleme hakkında daha fazla bilgi için bkz: Nasıl yapılır: Bilgileri görüntülemek ve bir yayını (çoğaltma İzleyicisi) ilişkilendirilmiş aracıların için görevleri gerçekleştir.Dağıtım Aracısı ve Birleştirme Aracısı hakkında daha fazla bilgi için bkz: Nasıl yapılır: Bilgileri görüntülemek ve abonelik (çoğaltma İzleyicisi) ilişkilendirilmiş aracıların için görevleri gerçekleştir.Hata devam ederse, günlüğü Aracısı'nın artırmak ve günlük için bir çıktı dosyası belirtin.Hata içeriğe bağlı olarak, bu hata ve/veya ek hata iletileri taşına adımlar sağlayabilir.Daha fazla bilgi için bkz: Çoğaltma aracıları (sorun giderme).
Verilerin teslim neden sık karşılaşılan hatalar izin sorunları ve kısıtlama ihlalleri içerir.İzinler hakkında daha fazla bilgi için bkz: Çoğaltılmasını veri engelleyen güvenlik sorunları.Bir kısıtlama ihlali, Abone tarafında eklenen satır engel.
İçin işlem çoğaltma, bir kısıtlama ihlali; hata olarak kabul edilir Varsayılan olarak bunlar bunlar oluşursa eşitlemeyi durdurmak Dağıtım Aracısı neden (Bu hatalar atlanıyor hakkında daha fazla bilgi için bkz: İşlemsel kopyalama hatalar atlanıyor).Mektup birleştirme için çoğaltma, bir kısıtlama ihlali; çakışma kabul edilir günlüğe kaydedilir, ancak eşitlemeyi durdurmak Birleştirme Aracısı neden olmaz.Her iki çoğaltma türünü kısıtlama ihlalleri yakınsaması için bir ekleme, güncelleştirme veya silme tek bir düğüme başarılı olursa yol açabilecek başka başarılı olmaz.
Tablo yayımlandığında, yabancı anahtar kısıtlamaları ve Kontrol kısıtlamaları oluşturulmasını, varsayılan şema seçeneklerini belirtmek abonelik veritabanı ile not for REPLICATION seçeneği küme.Uygulama kısıtlamaları için farklı ayarlar gerektiriyorsa, şema seçenekleri değiştirin.Daha fazla bilgi için bkz: Nasıl yapılır: Şema seçenekleri (sql Server Management Studio'yu) belirtin ve Nasıl yapılır: Şema seçenekleri (çoğaltma Transact-sql programlama) belirtin.
Bir işlemsel abonelik anlık görüntü başlatıldı ve yayın oluşturulduğundan bu yana değişiklikleri yayımcı üzerinde olmuştur:
Bir yayın tarafından başlatılan etkinleştirirseniz, bir yedek, yayımlanmış tabloları değişiklikleri izlenen yayın veritabanı günlüğüne yayını oluşturulduktan hemen.Bir abonelik başlatıldığında, bunlar hala kullanılabilir olduğu sürece bekleyen değişiklikler için abone teslim dağıtım veritabanı.
Kullanarak bir abonelik başlatmak, bir yedek kopyadan başlatılıyor aksine yalnızca çoğaltma desteği seçeneği, sizin veya uygulamanız gerekir emin veri ve şema gerektiği gibi at eşitlendiğini saat Abonelik Ekle.Örneğin, yoksa faaliyet yayımcı üzerinde arasında saat veri ve şema abone ve abonelik eklendiği saat kopyalanır, bu aktivitesinden kaynaklanan değişiklikler için abone yinelenmiş.
Daha fazla bilgi için bkz: Bir anlık görüntü olmadan bir işlemsel abonelik başlatılıyor.
Çoğaltma, saklı yordam bir işlemsel yayım yürütme abone adresindeki farklı sonuçlar üretir.
Yürütülmesini çoğalttıysanız bir saklı yordam, yordam tanımı için abone çoğaltılan abonelik başlatıldığında; yordam Yayımcı tarafında çalıştırıldığında, çoğaltma abone adresindeki ilgili yordamı yürütür.Daha fazla bilgi için bkz: İşlem çoğaltma yayımlama saklı yordamı yürütme.
Saklı yordam farklı veri yayımcı adresindeki abone veya davranır farklı bir eylem gerçekleştirir, sapma durumu oluşabilir.Bir hesaplama gerçekleştirir ve bu hesaplamaya dayalı veri ekleyen bir yordam göz önünde bulundurun.Abone adresindeki hesaplamanın farklı verilere dayanıyorsa, abone süzülmüş, Abone tarafında eklenen sonucu farklı olabilir veya INSERT hiç ortaya çıkabilir.
INSERT saklı yordam tarafından kullanılan işlem makalede karşılanmaması bir koşul içerir.
Varsayılan olarak, işlem çoğaltma aboneleri değişiklikleri yaymak için saklı yordamlar küme kullanır.Ayrıca, uygulamanızın gerektirdiği iş mantığı eklemek için bu yordamları özelleştirebilirsiniz.Daha fazla bilgi için bkz: Değişiklikleri için işlemsel makaleleri nasıl yayılma belirtme.Yoksa Ekle saklı yordam , INSERT oluşmaz karşılanır değil kendi mantığı içinde bir koşul içerir.Abone adresindeki bir tablo (tablo a) belirli bir değeri başka bir tabloya (tablonun b) INSERT izin vermeden önce denetlemek için özelleştirilmiş bir yordam göz önünde bulundurun.Değer bir hata nedeniyle a tablosunda kullanılabilir değilse veya verileri bu tabloya henüz çoğaltılmamıştır çünkü beklenen satır tablo B'den eksik
Veri bir kullanıcı, bir çoğaltma komut dosyası veya başka bir uygulama tarafından siliniyor:
Kullanıcıların veri abone adresindeki silmek izin vermek isterseniz, birleştirme çoğaltması, güncelleştirilebilir abonelikleri ile işlem çoğaltma veya eşler arası işlem çoğaltma kullanın.Sonuçta Yayımcı ve abone veri yakınsama için Yayımcı için siler yayılır.Daha fazla bilgi için bkz: Birleştirme çoğaltma genel bakış ve İşlemsel kopyalama için yayın türleri.
Kullanıcıların veri abone adresindeki silmelerini önlemek istiyorsanız, Word ' ü geri alma içeren ve (önleyen tetikleyici bir işlem çoğaltma aracısı gerçekleştirdiğinde tetikleme) not for REPLICATION seçeneğini kullanan her tablo için bir tetikleyici oluşturun.Örneğin:
USE AdventureWorks2008R2; GO CREATE TRIGGER prevent_user_dml ON Person.Address FOR INSERT, UPDATE, DELETE NOT FOR REPLICATION AS ROLLBACK;
Daha fazla bilgi için bkz: CREATE TRIGGER (Transact-SQL) ve Denetleme sınırlamaları, kimlikleri ve tetikleyiciler not ile çoğaltma.
Çoğaltma komut dosyaları önce ve sonra anlık görüntü görüntüsünü uygulanır ve eşitleme sırasında yürütmek sağlar.The @pre_snapshot_script and @post_snapshot_script parameters of sp_addpublication and sp_addmergepublication allow you to specify scripts to run before and after the snapshot is applied.Daha fazla bilgi için bkz: Önce ve sonra bir Snapshot uygulanan komut dosyalarını çalıştırma.Saklı yordam sp_addscriptexec sayede yürütmek eşitleme işlemi sırasında bir komut dosyası.Daha fazla bilgi için bkz: Nasıl yapılır: Komut dosyaları (çoğaltma Transact-sql programlama) eşitleme sırasında çalıştırma.
Bu komut dosyaları, genellikle oturumları Abone tarafında ekleme gibi yönetimsel görevleri için kullanılır.Verileri salt okunur olarak ele alınması bir abone adresindeki silmek için kullanılan komut dosyaları, yönetici bu yakınsaması neden emin olmanız gerekir.
Veriler bir tetikleyici tarafından silinir veya tetikleyici rollback deyim içerir.
Yakınsaması veya başka sorunlara neden olacak şekilde abone adresindeki Tetikleyicileri düzgün yönetiliyor olması gerekir:
Birleştirme çoğaltması, güncelleştirilebilir abonelikleri ile işlem çoğaltma veya eşler arası işlem çoğaltma kullanıyorsanız, Tetikleyiciler abone veri değişiklikleri yalnızca sağlamalıdır.Daha fazla bilgi için bkz: Birleştirme çoğaltma genel bakış ve İşlemsel kopyalama için yayın türleri.
Çoğu durumda, tetikleyici not for REPLICATION seçeneğini kullanmanız gerekir.Tetikleyici rollback deyim içerir ve tetikleyici not for REPLICATION seçeneğini kullanmak, bir abone için çoğaltıldığı satırları uygulanmayabilir.
İçin işlem çoğaltma, kaydetme ve geri alma ifadeleri de tetikleyici kullanma ve xact_abort ayarı ile ilgili hususlar vardır.Daha fazla bilgi için bkz: "Tetikleyiciler" kısmında İşlemsel kopyalama için dikkat edilmesi gereken noktalar.