Bir işlem çoğaltması ayarladığınızda, SQL Server'ın kimlik aralığı yönetimini el ile olarak ayarlayacağını fark ettim. Bunun anlamı, abonelik veritabanımda, PK bir kimlik sütunu olan bir tabloya yeni bir kayıt eklemeye çalıştığımda, bana bir hata verecek ve "1", "2'lik bir PK eklemeye çalıştığını söyleyecek "," 3 "vb. Bunun nedeni, abone üzerindeki tüm kimlik sütunlarının geçerli kimlik değerinin, yayıncıda olduğu gibi kalmak yerine tohum değerine (genellikle 1) sıfırlanmasıdır.
SQL Server'ın bunu neden yaptığını anlıyorum - abone tablosunu salt okunur olarak bırakmanız gerekiyor. Ancak, senaryom biraz alışılmışın dışında - Abonemi zaman zaman çoğaltma yoluyla güncelliyor, bu DB'nin anında bir yedeğini alıyorum, daha sonra aboneye yayıncıya geri gönderilmeyecek bazı güncellemeler yapmak istiyorum, sonra Aboneyi tekrar güncellemeye gittiğimde, veritabanını önceki yedeklemeden geri yükler ve en son güncellemeleri alırım. Aboneye bu güncellemeler arasında güncellemeler yapmak istediğim için (eğer yapacaksanız 'geçici deltalar'), çoğaltıldığında 1'e sıfırlanmaması için kimlik sütununa ihtiyacım var.
Yayımı oluştururken otomatik kimlik aralığı yönetimini açmayı denedim, ancak yayına bir tablo eklemeye çalıştığımda bu sadece bana aşağıdaki hatayı veriyor:
Msg 21231, Seviye 16, Durum 1, Prosedür sp_MSrepl_addarticle, Line 2243
Otomatik kimlik aralığı desteği yalnızca abonelerin güncellenmesine izin veren yayınlar için kullanışlıdır.
Bu sorunu çözmenin bir yolu var mı? Bu çoğaltmayı SQL Server'a abone sonunda salt okunur olarak sunmak istiyorum, çünkü yayıncıya geri gönderilecek güncelleştirmeler yapmayı planlamıyorum , ancak geçici güncelleştirmeler yapmak istiyorum sonraki çoğaltma işleminden önce silinecektir.
Ayrıca anlık görüntü çoğaltma benim kullanım deseni için işlem çoğaltma daha uygun bir yöntem olabilir, ama sorun anlık görüntü çoğaltma her darn DB her güncelleştirme gönderme gerektirir olmasıdır ; Ben en son çoğaltma sonra DB hemen bir yedek almayı planlıyorum çünkü, her zaman tüm transfer yapmak gerekmez; sadece son zamandan bu yana yapılan değişiklikler.
Is there any way I can get round this problem?Sql server 2005 ve sonraki sürümler için sys.sp_identitycolumnforreplication kullanarak kimlik sütununu REPLICATION için DEĞİL olarak ayarlamanız gerekir . Kimlik sütununu çoğaltma için değil olarak değiştirdiğinizde makalelerinizi yeniden görüntülemeniz bile gerekmez. GUI kullanarak yapmayın.