Aracılığıyla paylaş


İşlemsel kopyalama için dikkat edilmesi gereken noktalar

Dikkat edilmesi gereken noktalar için birkaç işlem çoğaltma:

  • Hareket günlük alanı.

  • Dağıtım veritabanı için disk alanı.

  • Yayımlanan her tablo için birincil anahtar.

  • Tetikler.

  • Büyük nesne (lob) veri türleri.

  • (Bunlar kullanılıyorsa) güncelleştirilebilir abonelikleri.Güncelleştirilebilir abonelikleri için ilgili önemli noktalar hakkında daha fazla bilgi için bkz: İşlem çoğaltma için güncelleştirilebilir abonelikleri.

Hareket günlük alanı

İşlem çoğaltma kullanarak yayımlanan her veritabanı için işlem günlüğü ayrılan yeterli boş alan olduğundan emin olun.Günlük kayıtları için dağıtım veritabanı taşınmış kadar kesildi çünkü yayımlanan veritabanının işlem günlüğü günlük veritabanının bir özdeş yayımlanmamış, çok daha fazla alan gerektirebilir.

Dağıtım veritabanı kullanılamıyorsa veya Günlük Okuyucu Aracısı çalışmıyorsa, yayın veritabanı işlem günlüğünün büyümesine devam ediyor.Günlük dağıtım veritabanı teslim en eski yayımlanan harekete geçen kesilmiş olamaz.Öneririz, küme otomatik olarak işlem günlüğü dosyasının büyümesine böylece günlük Bu koşullarda barındırabilir.Daha fazla bilgi için bkz: Veritabanı (Transact-SQL) oluştur ve ALTER DATABASE (Transact-SQL).

Öneririz, küme yedek ile eşitleme distribution veritabanında karşılık gelen hareketleri yedeklenmiş kadar yayın veritabanı oturum kesilmesi geciktirir dağıtım veritabanı seçeneği.Bu yayın veritabanı büyük bir hareket günlüğüne neden olabilir.Bu seçenek hakkında daha fazla bilgi için bkz: Yedekleme ve geri yükleme anlık görüntü ve işlem çoğaltma stratejileri.

Dağıtım veritabanı için disk alanı

Çoğaltılmış hareketleri depolamak için yeterli disk alanı olduğundan emin olun dağıtım veritabanı:

  • Anlık görüntü yapmayın, hemen abonelere kullanılabilir dosyalar (olduğu varsayılan): hareketleri, tüm abonelerine veya saklama dönemi sınırına kadar hangisi daha kısa ise çoğaltıldığını kadar saklanır.

  • Bir işlem oluşturursanız, yayın ve anlık görüntü dosyaları abonelerinin kullanabildiği hemen: hareketleri tüm abonelere çoğaltıldığını veya anlık görüntü Aracısı çalıştırır ve yeni bir anlık görüntü oluşturur kadar hangisi daha uzun kadar saklanır.Anlık Görüntü Aracısı çalıştırır arasında geçen süre en fazla dağıtım saklama süresi için bir varsayılan 72 saat olan yayın büyükse hareketleri saklama dönemi eski dan kaldırılan dağıtım veritabanı.Daha fazla bilgi için bkz: Abonelik bitiş ve etkinliğini kaldırmayı.

Anlık görüntü abonelere hemen kullanılabilmesini ile yeni aboneleri yayın erişimi hızını artırır, ancak seçenek artan disk depolama dağıtım veritabanı için neden olabilir.Ayrıca, anlık görüntü Aracısı çalışır her saat yeni bir anlık görüntü oluşturulurken kullanılan anlamına gelir.Seçeneği kullanılırsa, yalnızca yeni bir abonelik varsa, yeni bir anlık görüntü oluşturulur.

Yayımlanan her tablo için birincil anahtarları

Tüm tabloları işlem'de yayınlanan çoğaltma birincil anahtar içermesi gerekir.Varolan tablolar hazır yayımlama için birincil anahtar kullanarak bir ekleyerek Transact-SQL deyim ALTER TABLE (Transact-SQL).

Tetikleyicileri

Bir abonelik veritabanı Tetikleyiciler kullanırken aşağıdaki sorunları dikkate alın:

  • Varsayılan olarak, harekete yürütmek on ayarlama xact_abort ile.Dağıtım Aracısı abone adresindeki değişiklikler uygulanıyor iken bir deyim içinde bir tetikleyici bir hata neden olur, değişikliklerin tüm toplu iş iş, yerine tek tek ifadesi başarısız olur.' Deki işlem çoğaltma kullanarak - skiperrors hatalara neden ifadeleri atlamak için Dağıtım Aracısı parametresi.If -SkipErrors is used with XACT_ABORT ON, the entire batch of changes is skipped if a statement causes an error.Olmasını xact_abort gerektirmedikçe küme on alan önerilir, küme için kullanıyorsanız, kapalı - skiperrors parametresi.İçin küme , seçeneğini belirtmek SET XACT_ABORT OFF Tetikleyici tanım.xact_abort hakkında daha fazla bilgi için bkz: set xact_abort (Transact-SQL).Hakkında daha fazla bilgi için - skiperrors parametresi, bkz:İşlemsel kopyalama hatalar atlanıyor.

  • Açık hareketler abone adresindeki Tetikleyicileri hariç öneririz.İşlem çoğaltma ağ gidiş-dönüş, böylece performans arttırmak azaltmak için toplu işleme hareket tiplerini kullanır.rollback deyimleri içeren tetikleyici Abone tarafında eklediyseniz, toplu işlemler iptal ve sunucu hatası 266 olabilir oluşturuldu (execute COMMIT veya rollback İŞLEMİNİ deyim eksik olduğunu sonra hareket sayısı.Önceki sayısı = % ld, geçerli sayısı = % ld.).Toplu iş komutları birden çok hareketleri içerebilir veya büyük bir hareketin parçası Yayımcı tarafında olması, bu nedenle hareketleri geri alınıyor işlem tehlikeye bütünlük.

    Açık hareketler dahil, tüm COMMIT deyim bir tetikleyici içinde karşılık gelen BEGIN TRANSACTION deyimi sahip olduğunuzdan emin olun.Karşılık gelen BEGIN TRANSACTION olmadan bir TAMAMLAMA satır değişiklikleri işlemsel olmayan bir uygulama için abone olur.Dağıtım Aracısı sunucu hatası 266 karşılaşır ve böylece bunları yeniden uygulayabilirsiniz bir hareket veya bir toplu iş komut geri almak almak çalışır Ayrıca, daha sonra bir hata oluşabilir.Aracı zaten uygulandı, komutları uygulamak çalıştığında, sonuçlar , yinelenen anahtar hataları.

Tetikleyiciler hakkında daha fazla bilgi için bkz: Denetleme sınırlamaları, kimlikleri ve tetikleyiciler not ile çoğaltma.

Büyük nesne (lob) veri türleri

İşlem çoğaltma yayımlama LOB'lar destekler ve lob sütunlarda kısmi güncelleştirmeleri gerçekleştirir: lob sütun güncelleştirdiyseniz, sütundaki tüm veriler yerine yalnızca değişen veri parçasını çoğaltılır.

Yayımlanmış bir tablo herhangi LOB'lar içeriyorsa, aşağıdaki Dağıtım Aracısı parametrelerini kullanarak göz önünde bulundurun: -UseOledbStreaming, - oledbstreamthreshold, ve - packetsize.En basit şekilde küme başlıklı Dağıtım Aracısı profilini kullanmak için bu parametreler olduğunu oledb akış için dağıtım profili.Daha fazla bilgi için bkz: Çoğaltma aracısı profilleri.Önceden tanımlanmış bu profilin yanı sıra bir Aracısı profili oluşturmak veya değiştirmek ya da komut satırı parametresi belirtebilirsiniz.Daha fazla bilgi için, bkz:

metin, ntext ve resim veri türleri

Çoğaltma işlemi text, ntext ve image bir işlem içindeki veri türlerini yayın çeşitli konuları. tabi olduğuVeri türleri kullanmanızı öneririz varchar(max), nvarchar(max), varbinary(max) yerine text, ntext, ve image veri türleri, sırasıyla.

Kullanırsanız, text, ntext, veya image, aşağıdakileri dikkate alın:

  • WRITETEXT ve updatetext deyimleri açık hareketler kaydırılan.

  • Günlüğe kaydedilen metin işlemleri, WRITETEXT ve updatetext yayımlanmış tabloları ile günlük seçeneğiyle kullanarak çoğaltılabilir.İLE günlük seçeneği gerekir çünkü işlem çoğaltma hareket günlüğündeki değişiklikleri izler.

  • updatetext işlemleri tüm aboneleri çalıştırıyorsanız kullanılabilir SQL Server.WRITETEXT işlemleri, update deyimleri yinelenir, bunlar da olmayan ile kullanılacak şekilde-SQL Server aboneleri.

  • Yapılandırılabilir bir parametre en büyük metin çoğaltma boyutu, en büyük boyutunu (bayt cinsinden) kontrol text, ntext, varchar(max), nvarchar(max), ve image çoğaltılabilir veri.Bu desteği verir: odbc sürücüleri ve ole db sağlayıcıları; örnekleri SQL Server Veritabanı Altyapısı ; Bu veri türleri için büyük değer işleyemez ve sistem kaynak (sanal bellek) kısıtlamaları olan dağıtıcıları.İşlem başarısız yapılandırılmış sınırı aştığından, ne zaman bir sütun ile bu veri türlerinden birini yayımlanır ve INSERT, update, WRITETEXT veya updatetext işlemini çalıştırın.

    Use sp_configure (Transact-SQL) sistem saklı yordamı için en büyük metin çoğaltma boyutu parametresi.

  • Yayımlarken, text, ntext, ve image sütun, metin işaretçisi alınan updatetext veya WRITETEXT işlem olarak (ve okuma repeatability) aynı işlem içinde.Örneğin, değil bir hareket içinde metin işaretçisi almak ve diğer kullanma.Onu taşındı ve geçersiz hale gelir.

    Metin işaretçisi elde edilmiş, ayrıca, metin işaretçisi (birincil anahtarın güncelleştirilmesi) tarafından updatetext veya WRITETEXT yürütmeden önce işaret metin konumunu değiştiren işlemleri gerçekleştirmelisiniz değil deyim.

    Bu işlemleri updatetext ve WRITETEXT çoğaltılması için veri ile kullanma önerilen yoldur:

    1. Hareket başlar.

    2. textptr() kullanarak metin işaretçisi almak işlev YİNELENEBİLİR okuma yalıtım düzey.

    3. Metin işaretçisi updatetext veya WRITETEXT işlemi kullanın.

    4. Hareketi kaydedin.

      Not

      Metin imleci aynı işlemde elde, değişiklikleri Yayımcı tarafında izin verilir, ancak değişiklikler abonelere yayımlanır.

    Örneğin:

    SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
    BEGIN TRAN
    DECLARE @mytextptr varbinary(16)
    SELECT @mytextptr = textptr(Notes)
    FROM Employees 
    WHERE EmployeeID = '7'
    IF @mytextptr IS NOT NULL 
    BEGIN
    UPDATETEXT Employees.Notes @mytextptr 0 NULL 'Terrific job this review period.'
    -- Dummy update to fire trigger that will update metadata and ensure the update gets propagated to other Subscribers.
    UPDATE Employees 
    -- Set value equal to itself.
    SET Notes = Notes
    WHERE EmployeeID = '7' 
    END
    COMMIT TRAN 
    SET TRANSACTION ISOLATION LEVEL READ COMMITTED
    

Not

Bu örnek Northwind veritabanının varsayılan olarak yüklenmeyen dayanır.Bu veritabanı yükleme hakkında daha fazla bilgi için bkz: Northwind ve pubs örnek veritabanları en Microsoft Yükleme Merkezi.

Abone veritabanları boyutlandırma sırasında metin işaretçisi çoğaltılmış olduğunu önemliyse text, ntext, ve image sütunları başlatılmış, abone tablolarda, hatta zaman bunlar başlatılmamış Yayımcı.Sonuç olarak, her text, ntext, ve image abone ile eklenen sütun tablo içeriği yok. bile en az 43 bayt depolama veritabanı görev dağıtım tarafından tüketir