Dağıtım Aracısı'nda -SkipErrors parametresini kullanma

Bu makalede Dağıtım Aracısı'nda parametre kullanımı -SkipErrors tanıtır.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 327817

Özet

Microsoft SQL Server Dağıtım Aracısı'nda, Dağıtım Aracısı'nın işlem çoğaltmasında belirtilen hatayı atlayıp dağıtım işlemine devam etmesi için izin veren yeni parametreyi -SkipErrors içerir.

Aşağıdaki alıntı, SQL Server Books Online'daki Aracı Hatalarını İşleme konusundan alınmıştır:

Tipik çoğaltma işleme altında atlanması gereken hatalara karşılaşmamalısınız. İşlem çoğaltması sırasında hataları atlama özelliği, hataları beklediğiniz ve çoğaltmayı etkilemesini istemediğiniz benzersiz durumlarda kullanılabilir (örneğin, günlük gönderimi sırasında ikincil yayımcıya yük devredildiğinde).

Microsoft, bu parametreyi dikkatli bir şekilde ve yalnızca aşağıdakileri iyi anladığınızda kullanmanızı önerir:

  • Hatanın gösterdiği.
  • Hatanın neden oluştuğu.
  • Hatayı çözmek yerine atlamak neden daha iyidir?

Bu öğelerin yanıtlarını bilmiyorsanız, parametrenin -SkipErrors uygunsuz kullanımı Yayımcı ile Abone arasında veri tutarsızlığına neden olabilir. Bu makalede, parametresini yanlış kullandığınızda -SkipErrors oluşabilecek bazı sorunlar açıklanmaktadır.

Daha fazla bilgi

İşlem çoğaltmasında, Yayımcı'daki veri değişiklikleri işlem birimindeki Aboneye yayılır.

Bir işlemde birden çok komut olabilir. Varsayılan olarak, bir komut başarısız olursa, çoğaltma işleminin tamamı Abone'ye geri döner. Dağıtım Aracısı'nın belirli hataları atlamasına izin vermek için parametresini eklerseniz -SkipErrors , bu hataya neden olan tek tek komut Aboneye uygulanmaz, ancak aynı işlemlerdeki diğer tüm komutlar uygulanır. Bu durumda, çoğaltma işlemi Aboneye yalnızca kısmen uygulanır ve bu nedenle Yayımcı ile Abone arasında veri tutarsızlığına neden olabilir.

Örneğin:

T1 adlı Abone tablosuna çoğaltılmayı bekleyen bir işleminiz var. Bu işlem 100 insert deyimi içerir. Abone için geçerli olduğunda, ilk 90 ekleme işlemi doğru şekilde gerçekleştirilir; ancak doksan birinci insert deyimi başarısız olur ve birincil anahtar ihlali hatası 2627 oluşur.

parametresini -SkipErrors kullanmadığınızda (varsayılan davranış):

Varsayılan olarak, tüm işlem geri alınır ve 100 yeni kayıttan hiçbiri abone olan tabloya eklenmez. Bu durumda, işlemin Aboneye yeniden uygulanabilmesi için çoğaltma hatasını düzeltmeniz gerekir.

parametresini -SkipErrors kullandığınızda:

Dağıtım Aracısı, hatayı Dağıtım Aracısı geçmişinde günlüğe kaydeder, bu hatayı atlar ve ardından dağıtım işlemine devam eder. Bu nedenle, hataya neden olan doksan birinci yeni kayıt dışında, diğer 99 yeni kayıt abone olan tabloya eklenir. Abonedeki hatayı el ile düzeltseniz bile bu işlem Dağıtım Aracısı tarafından yeniden uygulanmaz. Bu nedenle, bu durumda Abone doksan ilk yeni kaydı eksiktir ve bir veri tutarsızlık sorunu oluşur.

Ayrıca, SQL Server 2000'de Dağıtım Aracısı'nın genellikle birden çok yayın tarafından paylaşıldığını da bilmeniz gerekir (varsayılan olarak yayın veritabanı ve abonelik veritabanı çifti başına bir Dağıtım Aracısı vardır), dolayısıyla parametreyi -SkipErrors Dağıtım Aracısı işine eklerseniz, bu aracının hizmet verdiği tüm yayınları etkiler. SQL 2005 ve SQL 2008 sürümlerinde, işlem çoğaltması Yeni Yayın Sihirbazı'nda oluşturulan yayınlar için varsayılan olarak bağımsız aracılar kullanır. Saklı yordam kullanılarak sp_addpublication oluşturulan yayınlar için varsayılan davranış paylaşılan aracı kullanmaktır.

Belirli bir yayının parametresini -SkipErrors kullanmak için, yalnızca bir aboneliğe hizmet veren bağımsız bir aracı kullanın. Bağımsız bir aracı kullanmak için sürümünüzle ilgili adımları izleyin:

SQL Server 2000

  1. SQL Server Enterprise Yöneticisi'nde yayına sağ tıklayın, öğesine tıklayın Propertiesve abonelik seçenekleri sekmesinde, bu veritabanındaki diğer yayınlardan bağımsız bir Dağıtım Aracısı kullan seçeneğine tıklayın.

    Not

    Bu yayına abonelik ekledikten sonra bu seçeneği etkinleştiremezsiniz.

  2. Parametresini -SkipErrors belirli bir aboneliğin Dağıtım Aracısı'na ekleyin.

SQL Server 2005 ve SQL Server 2008

  1. SQL Server management studio'da Çoğaltma'ya gidin ve Yerel Yayınlar bölümünde yayına sağ tıklayın, Özellikler'e tıklayın ve abonelik seçenekleri sayfasında Bağımsız Dağıtım Aracısı değerini False yerine True olarak değiştirin.

    Not

    Bu yayına abonelik ekledikten sonra bu seçeneği etkinleştiremezsiniz.

  2. Parametresini -SkipErrors belirli bir aboneliğin Dağıtım Aracısı'na ekleyin.

Daha fazla bilgi için aşağıdakilere bakın: