Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Bu konu başlığı altında SQL Server Management Studio, Transact-SQL veya Çoğaltma Yönetim Nesneleri (RMO) kullanarak SQL Server abonesindeki verilerin nasıl doğrulandığı açıklanmaktadır.
İşlem ve birleştirme çoğaltması, Abone'deki verilerin Yayımcı'daki veriyle eşleşip eşleşmediğini doğrulamanıza olanak sağlar. Doğrulama, belirli abonelikler veya bir yayına yönelik tüm abonelikler için gerçekleştirilebilir. Aşağıdaki doğrulama türlerinden birini belirtin; Dağıtım Aracısı veya Birleştirme Aracısı bir sonraki çalıştırıldığında verileri doğrular:
- Yalnızca satır sayısı. Bu, Abonedeki tablonun Publisher'daki tabloyla aynı sayıda satıra sahip olup olmadığını doğrular, ancak satırların içeriğinin eşleşip eşleşmediğini doğrulamaz. Satır sayısı doğrulaması, verilerinizle ilgili sorunları fark etmenize olanak sağlayan basit bir doğrulama yaklaşımı sağlar.
- Satır sayısı ve ikili sağlama toplamı. Publisher ve Abone'de satır sayısının alınmasına ek olarak, sağlama toplamı algoritması kullanılarak tüm verilerin sağlama toplamı hesaplanır. Satır sayısının başarısız olması durumunda, sağlama toplamı gerçekleştirilmez.
Abone ve Yayımcı eşleşmesindeki verileri doğrulamaya ek olarak, birleştirme çoğaltması her Abone için verilerin doğru bölümlendiğini doğrulama olanağı sağlar. Daha fazla bilgi için bkz. Birleştirme Abonesi için Bölüm Bilgilerini Doğrulama.
Uyarı
Azure SQL Yönetilen Örnek, anlık görüntü ve işlem çoğaltması için yayımcı, dağıtıcı ve abone olarak kullanılabilir. Azure SQL Veritabanı'ndaki veritabanları yalnızca anlık görüntü ve işlem çoğaltması için gönderim aboneleri olabilir. Daha fazla bilgi için bkz. Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği ile işlem çoğaltması.
Veri Doğrulama Nasıl Çalışır?
SQL Server, Publisher'da bir satır sayısını veya sağlama toplamını hesaplayıp bu değerleri Abone'de hesaplanan satır sayısı veya sağlama toplamıyla karşılaştırarak verileri doğrular. Yayın tablosunun tamamı için bir değer ve abonelik tablosunun tamamı için bir değer hesaplanır, ancak metin, ntext veya görüntü sütunlarındaki veriler hesaplamalara dahil edilmez.
Hesaplamalar yapılırken, satır sayılarının veya sağlama toplamlarının çalıştırıldığı tablolara geçici olarak paylaşılan kilitler yerleştirilir. Ancak, hesaplamalar hızlı bir şekilde tamamlanır ve genellikle bu paylaşılan kilitler birkaç saniye içinde kaldırılır.
İkili sağlama toplamları kullanıldığında, 32 bit yedeklilik denetimi (CRC), veri sayfasındaki fiziksel satırdaki bir CRC yerine sütun temelinde gerçekleşir. Bu, tablo içeren sütunların veri sayfasında fiziksel olarak herhangi bir sırada olmasını sağlar, ancak yine de satır için aynı CRC'ye hesaplar. Yayında satır veya sütun filtreleri olduğunda, ikili sağlama toplamı doğrulaması kullanılabilir.
Verileri doğrulamak üç bölümden oluşur:
Tek bir yayına veya bir yayındaki tüm abonelikler doğrulama için işaretlenir. Microsoft SQL Server Management Studio'daki Yerel Yayınlar klasöründe ve Yerel Abonelikler klasöründe bulunan Aboneliği Doğrula, Abonelikleri Doğrula ve Tüm Abonelikleri Doğrula iletişim kutularında abonelikleri doğrulama için işaretleyin. Ayrıca Tüm Abonelikler sekmesinden, Abonelik İzleme Listesi sekmesinden ve Çoğaltma İzleyicisi'ndeki yayınlar düğümünden abonelikleri işaretleyebilirsiniz. Çoğaltma İzleyicisi'ni başlatma hakkında bilgi için bkz. Çoğaltma İzleyicisi'ni başlatma.
Bir abonelik, Dağıtım Aracısı (işlem çoğaltması için) veya Birleştirme Aracısı (birleştirme çoğaltması için) tarafından bir sonraki eşitleme sırasında doğrulanır. Dağıtım Aracısı genellikle sürekli çalışır ve bu durumda doğrulama hemen gerçekleşir; Birleştirme Aracısı genellikle isteğe bağlı olarak çalışır ve bu durumda doğrulama aracıyı çalıştırdıktan sonra gerçekleşir.
Doğrulama sonuçlarını görüntüleyin:
- Çoğaltma İzleyicisi'ndeki ayrıntılı pencerelerde: İşlem çoğaltması için Dağıtımcıdan Abone Geçmişi sekmesinde ve birleştirme çoğaltması için Eşitleme Geçmişi sekmesinde.
- Management Studio'da Eşitleme Durumunu Görüntüle iletişim kutusunda.
Dikkat edilmesi gerekenler ve kısıtlamalar
Verileri doğrularken aşağıdaki sorunları dikkate alın:
- Verileri doğrulamadan önce abonelerdeki tüm güncelleştirme etkinliklerini durdurmanız gerekir (doğrulama yapılırken Yayımcı'da etkinliğin durdurulması gerekmez).
- Sağlama toplamları ve ikili sağlama toplamları büyük bir veri kümesi doğrulanırken büyük miktarda işlemci kaynağı gerektirebileceğinden, çoğaltmada kullanılan sunucularda en az etkinlik olduğunda doğrulamayı gerçekleşecek şekilde zamanlamanız gerekir.
- Çoğaltma yalnızca tabloları doğrular; Yalnızca şema makalelerinin (saklı yordamlar gibi) Yayımcı ve Abone'de aynı olup olmadığını doğrulamaz.
- İkili sağlama toplamı yayımlanmış herhangi bir tablo ile kullanılabilir. Checksum, sütun filtreleri içeren tabloları veya sütun ötelemelerinin farklı olduğu mantıksal tablo yapılarını doğrulayamaz (sütunları bırakan veya ekleyen ALTER TABLE ifadeleri nedeniyle).
- Çoğaltma doğrulaması sağlama toplamı ve binary_checksum (ikili sağlama toplamı) işlevlerini kullanır. Davranışları hakkında bilgi için bkz . CHECKSUM (Transact-SQL) ve BINARY_CHECKSUM (Transact-SQL).
- İkili sağlama toplamı veya sağlama toplamı kullanılarak yapılan doğrulama, abonede veri türlerinin Yayımcı'dakinden farklı olması durumunda hatalı bir hata bildirebilir. Aşağıdakilerden birini yaparsanız bu durum oluşabilir:
- SQL Server'ın önceki sürümleri için veri türlerini eşlemek için şema seçeneklerini açıkça ayarlayın.
- Birleştirme yayınının yayın uyumluluk düzeyini SQL Server'ın önceki bir sürümüne ayarlayın ve yayımlanan tablolar bu sürüm için eşlenmesi gereken bir veya daha fazla veri türü içerir.
- Aboneliği manuel olarak başlatarak Abone'de farklı veri türleri kullanıyorlar.
- İşlem çoğaltması için dönüştürülebilir aboneliklerde ikili kontrol toplamı ve kontrol toplamı doğrulamaları desteklenmez.
- SQL Server abonesi olmayanlara çoğaltılan veriler için doğrulama desteklenmez.
- Çoğaltma İzleyicisi'nin yordamları yalnızca itme abonelikleri içindir çünkü çekme tabanlı abonelikler Çoğaltma İzleyicisi'nde eşitlenemez. Ancak, çoğaltma için bir aboneliği işaretleyebilir ve Çoğaltma İzleyicisi'nde çekme abonelikleri için doğrulama sonuçlarını görüntüleyebilirsiniz.
- Doğrulama sonuçları doğrulamanın başarılı mı yoksa başarısız mı olduğunu gösterir, ancak bir hata oluştuğunda doğrulamanın başarısız olduğu satırları belirtmez. Yayımcı ve Abone'deki verileri karşılaştırmak için tablediff Yardımcı Programını kullanın. Bu yardımcı programı çoğaltılmış verilerle kullanma hakkında daha fazla bilgi için bkz . Çoğaltılan Tabloları Farklılıklar için Karşılaştırma (Çoğaltma Programlama).
Veri Doğrulama Sonuçları
Doğrulama tamamlandığında, Dağıtım Aracısı veya Birleştirme Aracısı başarı veya başarısızlıkla ilgili iletileri günlüğe kaydeder (çoğaltma hangi satırların başarısız olduğunu bildirmez). Bu iletiler SQL Server Management Studio, Çoğaltma İzleyicisi ve çoğaltma sistemi tablolarında görüntülenebilir. Yukarıda listelenen nasıl yapılır konusu doğrulamayı çalıştırmayı ve sonuçları görüntülemeyi gösterir.
Doğrulama hatalarını işlemek için aşağıdakileri göz önünde bulundurun:
Çoğaltma: Abone veri doğrulamada başarısız oldu adlı çoğaltma uyarısını yapılandırın, böylece size hata bildirilir. Daha fazla bilgi için bkz. Önceden Tanımlanmış Çoğaltma Uyarılarını Yapılandırma (SQL Server Management Studio).
Doğrulamanın başarısız olması uygulamanız için bir sorun mu? Doğrulama hatası bir sorunsa verileri eşitlenecek şekilde el ile güncelleştirin veya aboneliği yeniden başlatın:
Veriler tablediff yardımcı programı kullanılarak güncelleştirilebilir. Bu yardımcı programı kullanma hakkında daha fazla bilgi için bkz . Yinelenen Tabloları Farklılıklar için Karşılaştırma (Çoğaltma Programlama).
Yeniden başlatma hakkında daha fazla bilgi için bkz. Abonelikleri Yeniden Başlatma.
Transaksiyonel Çoğaltmadaki Makaleler
SQL Server Management Studio'yu kullanma
- SQL Server Management Studio'da Publisher'a bağlanın ve ardından sunucu düğümünü genişletin.
- Çoğaltma klasörünü genişletin ve ardından Yerel Yayınlar klasörünü genişletin.
- Abonelikleri doğrulamak istediğiniz yayına sağ tıklayın ve ardından Abonelikleri Doğrula'ya tıklayın.
-
Abonelikleri Doğrula iletişim kutusunda doğrulanması gereken abonelikleri seçin:
- Tüm SQL Server aboneliklerini doğrula'yı seçin.
- Aşağıdaki abonelikleri doğrula seçeneğini seçin ve ardından bir veya daha fazla aboneliği seçin.
- Gerçekleştirilecek doğrulama türünü (satır sayısı veya satır sayısı ve sağlama toplamı) belirtmek için Doğrulama Seçenekleri'ne tıklayın ve Abonelik Doğrulama Seçenekleri iletişim kutusunda seçenekleri belirtin.
- Tamam'ı seçin.
- Çoğaltma İzleyicisi'nde veya Eşitleme Durumunu Görüntüle iletişim kutusunda doğrulama sonuçlarını görüntüleyin. Her abonelik için:
- Yayını genişletin, aboneliğe sağ tıklayın ve ardından Eşitleme Durumunu Görüntüle'ye tıklayın.
- Aracı çalışmıyorsa, Eşitleme Durumunu Görüntüle iletişim kutusunda Başlat'a tıklayın. İletişim kutusunda doğrulamayla ilgili bilgilendirme iletileri görüntülenir.
Eğer doğrulamayla ilgili herhangi bir mesaj görmüyorsanız, aracı zaten sonraki bir mesajı kaydetmiştir. Bu durumda, Çoğaltma İzleyicisi'nde doğrulama sonuçlarını görüntüleyin. Daha fazla bilgi için bu konudaki Çoğaltma İzleyicisi prosedürlerine bakın.
Transact-SQL Kullanımı
Tüm makaleler
Yayın veritabanında yer alan Publisher'da sp_publication_validation (Transact-SQL) çalıştırın.
@publicationbelirtin ve@rowcount_onlyiçin aşağıdaki değerlerden birini seçin:- 1 - yalnızca satır sayısı denetimi (varsayılan)
- 2 - satır sayısı ve ikili sağlama toplamı.
Uyarı
sp_publication_validation (Transact-SQL) yürütürken, yayındaki her makale için sp_article_validation (Transact-SQL) yürütülür. sp_publication_validation (Transact-SQL) başarıyla yürütmek için yayımlanan temel tablolardaki tüm sütunlarda SELECT izinlerine sahip olmanız gerekir.
(İsteğe bağlı) Zaten çalışmıyorsa her abonelik için Dağıtım Aracısı'nı başlatın. Daha fazla bilgi için bkz. Çekme Aboneliğini Eşitleme ve İtme Aboneliğini Eşitleme.
Doğrulamanın sonucu için ajan çıktısını kontrol edin.
Tek makale
Publisher'da, yayın veritabanındaki sp_article_validation (Transact-SQL) yürütün.
@publicationiçin makalenin adını ve@articleiçin aşağıdaki değerlerden birini belirtin:@rowcount_only- 1 - Yalnızca satır sayısı denetimi (varsayılan)
- 2 - Satır sayısı ve ikili denetim toplamı.
Uyarı
sp_article_validation (Transact-SQL) başarıyla yürütmek için yayımlanan temel tablodaki tüm sütunlarda SELECT izinlerine sahip olmanız gerekir.
(İsteğe bağlı) Zaten çalışmıyorsa her abonelik için Dağıtım Aracısı'nı başlatın. Daha fazla bilgi için bkz. Çekme Aboneliğini Eşitleme ve İtme Aboneliğini Eşitleme.
Doğrulamanın sonucu için ajan çıktısını kontrol edin.
Tek abone
Yayın veritabanındaki Publisher'da BEGIN TRANSACTION (Transact-SQL) kullanarak açık bir işlem açın.
Yayın veritabanında, Publisher üzerinde sp_marksubscriptionvalidation (Transact-SQL) komutunu yürütün. için
@publicationyayınını, abonesinin@subscriberadını ve abonelik veritabanının@destination_dbadını belirtin.(İsteğe bağlı) Doğrulanan her abonelik için 2. adımı yineleyin.
Publisher'da, yayın veritabanındaki sp_article_validation (Transact-SQL) yürütün.
@publicationiçin makalenin adını ve@articleiçin aşağıdaki değerlerden birini belirtin:@rowcount_only- 1 - Yalnızca satır sayısı denetimi (varsayılan)
- 2 - Satır sayısı ve ikili denetim toplamı.
Uyarı
sp_article_validation (Transact-SQL) başarıyla yürütmek için yayımlanan temel tablodaki tüm sütunlarda SELECT izinlerine sahip olmanız gerekir.
Yayın veritabanındaki Publisher'da COMMIT TRANSACTION (Transact-SQL) kullanarak işlemi işleyin.
(İsteğe bağlı) Doğrulanan her makale için 1 ile 5 arasındaki adımları yineleyin.
(İsteğe bağlı) Zaten çalışmıyorsa Dağıtım Aracısı'nı başlatın. Daha fazla bilgi için bkz. Çekme Aboneliğini Eşitleme ve İtme Aboneliğini Eşitleme.
Doğrulamanın sonucu için ajan çıktısını kontrol edin. Daha fazla bilgi için bkz. Abonedeki Verileri Doğrulama.
İşlemsel bir yayına yapılan tüm gönderim abonelikleri
Çoğaltma İzleyicisi'nin kullanılması
Çoğaltma İzleyicisi'nde, sol bölmede bir Publisher grubunu genişletin ve sonra bir Publisher'ı genişletin.
Abonelikleri doğrulamak istediğiniz yayına sağ tıklayın ve ardından Abonelikleri Doğrula'ya tıklayın.
Abonelikleri Doğrula iletişim kutusunda doğrulanması gereken abonelikleri seçin:
- Tüm SQL Server aboneliklerini doğrula'yı seçin.
- Aşağıdaki abonelikleri doğrula seçeneğini seçin ve ardından bir veya daha fazla aboneliği seçin.
Gerçekleştirilecek doğrulama türünü (satır sayısı veya satır sayısı ve sağlama toplamı) belirtmek için Doğrulama Seçenekleri'ne tıklayın ve Abonelik Doğrulama Seçenekleri iletişim kutusunda seçenekleri belirtin.
Tamam'ı seçin.
Tüm Abonelikler sekmesine tıklayın.
Doğrulama sonuçlarını görüntüleyin. Her gönderim aboneliği için:
- Aracı çalışmıyorsa aboneliğe sağ tıklayın ve ardından Eşitlemeyi Başlat'a tıklayın.
- Aboneliğe sağ tıklayın ve ardından Ayrıntıları Görüntüle'ye tıklayın.
- Seçili oturum metin alanındaki Eylemler'de Dağıtımcıdan Aboneye Geçmişsekmesindeki bilgileri görüntüleyin.
Birleştirme Yayınına tek bir abonelik için
SQL Server Management Studio'yu kullanma
SQL Server Management Studio'da Publisher'a bağlanın ve ardından sunucu düğümünü genişletin.
Çoğaltma klasörünü genişletin ve ardından Yerel Yayınlar klasörünü genişletin.
Abonelikleri doğrulamak istediğiniz yayını genişletin, aboneliğe sağ tıklayın ve ardından Aboneliği Doğrula'ya tıklayın.
Aboneliği Doğrula iletişim kutusunda Bu aboneliği doğrula'yı seçin.
Gerçekleştirilecek doğrulama türünü (satır sayısı veya satır sayısı ve sağlama toplamı) belirtmek için Seçenekler'e tıklayın ve Abonelik Doğrulama Seçenekleri iletişim kutusunda seçenekleri belirtin.
Tamam'ı seçin.
Çoğaltma İzleyicisi'nde veya Eşitleme Durumunu Görüntüle iletişim kutusunda doğrulama sonuçlarını görüntüleyin:
- Yayını genişletin, aboneliğe sağ tıklayın ve ardından Eşitleme Durumunu Görüntüle'ye tıklayın.
- Aracı çalışmıyorsa, Eşitleme Durumunu Görüntüle iletişim kutusunda Başlat'a tıklayın. İletişim kutusunda doğrulamayla ilgili bilgilendirme iletileri görüntülenir.
Eğer doğrulamayla ilgili herhangi bir mesaj görmüyorsanız, aracı zaten sonraki bir mesajı kaydetmiştir. Bu durumda, Çoğaltma İzleyicisi'nde doğrulama sonuçlarını görüntüleyin. Daha fazla bilgi için bu konudaki Çoğaltma İzleyicisi prosedürlerine bakın.
Birleştirme Yayınına yönelik tüm abonelikler için
SQL Server Management Studio'yu kullanma
SQL Server Management Studio'da Publisher'a bağlanın ve ardından sunucu düğümünü genişletin.
Çoğaltma klasörünü genişletin ve ardından Yerel Yayınlar klasörünü genişletin.
Abonelikleri doğrulamak istediğiniz yayına sağ tıklayın ve ardından Tüm Abonelikleri Doğrula'ya tıklayın.
Tüm Abonelikleri Doğrula iletişim kutusunda, gerçekleştirilecek doğrulama türünü (satır sayısı veya satır sayısı ve sağlama toplamı) belirtin.
Tamam'ı seçin.
Çoğaltma İzleyicisi'nde veya Eşitleme Durumunu Görüntüle iletişim kutusunda doğrulama sonuçlarını görüntüleyin. Her abonelik için:
- Yayını genişletin, aboneliğe sağ tıklayın ve ardından Eşitleme Durumunu Görüntüle'ye tıklayın.
- Aracı çalışmıyorsa, Eşitleme Durumunu Görüntüle iletişim kutusunda Başlat'a tıklayın. İletişim kutusunda doğrulamayla ilgili bilgilendirme iletileri görüntülenir.
Eğer doğrulamayla ilgili herhangi bir mesaj görmüyorsanız, aracı zaten sonraki bir mesajı kaydetmiştir. Bu durumda, Çoğaltma İzleyicisi'nde doğrulama sonuçlarını görüntüleyin. Daha fazla bilgi için bu konudaki Çoğaltma İzleyicisi prosedürlerine bakın.
Birleştirme Yayınına tek bir anında iletme aboneliği için
Çoğaltma İzleyicisi'nin kullanılması
- Çoğaltma İzleyicisi'nde, sol bölmede bir Yayımcı grubunu genişletin, bir Publisher'ı genişletin ve sonra bir yayına tıklayın.
- Tüm Abonelikler sekmesine tıklayın.
- Doğrulamak istediğiniz aboneliğe sağ tıklayın ve ardından Aboneliği Doğrula'ya tıklayın.
- Aboneliği Doğrula iletişim kutusunda Bu aboneliği doğrula'yı seçin.
- Gerçekleştirilecek doğrulama türünü (satır sayısı veya satır sayısı ve sağlama toplamı) belirtmek için Seçenekler'e tıklayın ve Abonelik Doğrulama Seçenekleri iletişim kutusunda seçenekleri belirtin.
- Tamam'ı seçin.
- Tüm Abonelikler sekmesine tıklayın.
- Doğrulama sonuçlarını görüntüleme:
- Aracı çalışmıyorsa aboneliğe sağ tıklayın ve ardından Eşitlemeyi Başlat'a tıklayın.
- Aboneliğe sağ tıklayın ve ardından Ayrıntıları Görüntüle'ye tıklayın.
- Seçili oturum metin alanının Son iletisindekiEşitleme Geçmişi sekmesindeki bilgileri görüntüleyin.
Transact-SQL Kullanımı
Yayın veritabanında Publisher'da sp_validatemergesubscription (Transact-SQL)'i yürütün. Abonenin
@publicationadını, abonelik veritabanının@subscriberadını ve aşağıdaki değerlerden biri için@subscriber_dbbelirtin:- 1 - Yalnızca satır sayısı doğrulaması.
- 3 - Satır sayısı ikili sağlama toplamı doğrulaması.
Bu, seçili aboneliği doğrulama için işaretler.
Her abonelik için birleştirme aracısını başlatın. Daha fazla bilgi için bkz. Çekme Aboneliğini Eşitleme ve İtme Aboneliğini Eşitleme.
Doğrulamanın sonucu için ajan çıktısını kontrol edin.
Doğrulanan her abonelik için 1 ile 3 arasındaki adımları yineleyin.
Uyarı
Birleştirme yayını aboneliği, eşitlemenin sonunda Çoğaltma Birleştirme Aracısı çalıştırılırken -Validate parametresi belirtilerek de doğrulanabilir.
Birleştirme Yayını için tüm anlık gönderim abonelikleri
Çoğaltma İzleyicisi'nin kullanılması
- Çoğaltma İzleyicisi'nde, sol bölmede bir Publisher grubunu genişletin ve sonra bir Publisher'ı genişletin.
- Abonelikleri doğrulamak istediğiniz yayına sağ tıklayın ve ardından Tüm Abonelikleri Doğrula'ya tıklayın.
- Tüm Abonelikleri Doğrula iletişim kutusunda, gerçekleştirilecek doğrulama türünü (satır sayısı veya satır sayısı ve sağlama toplamı) belirtin.
- Tamam'ı seçin.
- Tüm Abonelikler sekmesine tıklayın.
- Doğrulama sonuçlarını görüntüleyin. Her gönderim aboneliği için:
- Aracı çalışmıyorsa aboneliğe sağ tıklayın ve ardından Eşitlemeyi Başlat'a tıklayın.
- Aboneliğe sağ tıklayın ve ardından Ayrıntıları Görüntüle'ye tıklayın.
- Seçili oturum metin alanının Son iletisindekiEşitleme Geçmişi sekmesindeki bilgileri görüntüleyin.
Transact-SQL Kullanımı
Publisher'da, yayın veritabanında sp_validatemergepublication (Transact-SQL) yürütün.
@publicationbelirtin ve@leveliçin aşağıdaki değerlerden birini seçin:- 1 - Yalnızca satır sayısı doğrulaması.
- 3 - Satır sayısı ikili sağlama toplamı doğrulaması.
Bu, tüm abonelikleri doğrulama için işaretler.
Her abonelik için birleştirme aracısını başlatın. Daha fazla bilgi için bkz. Çekme Aboneliğini Eşitleme ve İtme Aboneliğini Eşitleme.
Doğrulamanın sonucu için ajan çıktısını kontrol edin. Daha fazla bilgi için bkz. Abonedeki Verileri Doğrulama.
Birleştirme Aracısı parametrelerini kullanarak verileri doğrulama
Birleştirme Aracısını abonede (çekme aboneliği) veya Dağıtımcıda (itme aboneliği) komut satırından aşağıdaki yollardan biriyle başlatın.
- -Validate parametresi için 1 (satır sayısı) veya 3 (satır sayısı ve ikili sağlama toplamı) değeri belirtme.
- -ProfileName parametresi için satır sayısı doğrulamasını veya satır sayısı ve sağlama toplamı doğrulamasını belirtme.
Daha fazla bilgi için bkz. Talep Aboneliğini Eşitle veya Bas Aboneliğini Eşitle.
Çoğaltma Yönetimi Nesnelerini (RMO) Kullanma
Çoğaltma, Abonedeki verilerin Yayımcı'daki veriyle eşleştiğini program aracılığıyla doğrulamak için Çoğaltma Yönetim Nesneleri'ni (RMO) kullanmanıza olanak tanır. Kullandığınız nesneler çoğaltma topolojisinin türüne bağlıdır. İşlemsel çoğaltma, bir yayındaki tüm aboneliklerin doğrulanmasını gerektirir.
Uyarı
Örnek için bu bölümün devamında yer alan Örnek (RMO) bölümüne bakın.
İşlemsel yayındaki tüm makalelerin verilerini doğrulamak için
sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.
TransPublication sınıfının bir örneğini oluşturun. Yayının Name ve DatabaseName özelliklerini ayarlayın. ConnectionContext özelliğini 1. adımda oluşturulan bağlantıya ayarlayın.
Nesnenin kalan özelliklerini almak için LoadProperties yöntemini kullanın. Bu yöntem false döndürürse, 2. adımdaki yayın özellikleri yanlış tanımlanmıştır veya yayın mevcut değildir.
yöntemini çağırın ValidatePublication . Aşağıdakileri uygulayın.
Doğrulama tamamlandıktan sonra Dağıtım Aracısı'nın durdurulup durdurulmayacağını gösteren Boole değeri.
Bu, makaleleri doğrulama için işaretler.
Henüz çalışmıyorsa, her aboneliği eşitlemek için Dağıtım Aracısı'nı başlatın. Daha fazla bilgi için bkz. Push Aboneliğini Eşitleme veya Pull Aboneliğini Eşitleme. Doğrulama işleminin sonucu aracı geçmişine yazılır. Daha fazla bilgi için bkz. İzleme Çoğaltması.
Birleştirme yayınına yönelik tüm aboneliklerdeki verileri doğrulamak için
sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.
MergePublication sınıfının bir örneğini oluşturun. Yayının Name ve DatabaseName özelliklerini ayarlayın. ConnectionContext özelliğini 1. adımda oluşturulan bağlantıya ayarlayın.
Nesnenin kalan özelliklerini almak için LoadProperties yöntemini kullanın. Bu yöntem false döndürürse, 2. adımdaki yayın özellikleri yanlış tanımlanmıştır veya yayın mevcut değildir.
yöntemini çağırın ValidatePublication . İstenen ValidationOptionöğesini geçirin.
Doğrulamayı başlatmak için her abonelik için Birleştirme Aracısı'nı çalıştırın veya bir sonraki zamanlanmış çalıştırmayı bekleyin. Daha fazla bilgi için bkz. Çekme Aboneliğini Eşitleme ve İtme Aboneliğini Eşitleme. Doğrulama işleminin sonucu, Çoğaltma İzleyicisi'ni kullanarak görüntüleyebileceğiniz aracı geçmişine yazılır. Daha fazla bilgi için bkz. İzleme Çoğaltması.
Birleştirme yayınına tek bir abonelikteki verileri doğrulamak için
sınıfını kullanarak ServerConnection Publisher'a bir bağlantı oluşturun.
MergePublication sınıfının bir örneğini oluşturun. Yayının Name ve DatabaseName özelliklerini ayarlayın. ConnectionContext özelliğini 1. adımda oluşturulan bağlantıya ayarlayın.
Nesnenin kalan özelliklerini almak için LoadProperties yöntemini kullanın. Bu yöntem false döndürürse, 2. adımdaki yayın özellikleri yanlış tanımlanmıştır veya yayın mevcut değildir.
yöntemini çağırın ValidateSubscription . Doğrulanmakta olan Abone ve abonelik veritabanının adını ve istenen ValidationOption'i iletin.
Abonelik için doğrulamayı başlatmak üzere Birleştirme Etkeni'ni çalıştırın ya da bir sonraki zamanlanmış etken çalıştırılmasını bekleyin. Daha fazla bilgi için bkz. Çekme Aboneliğini Eşitleme ve İtme Aboneliğini Eşitleme. Doğrulama işleminin sonucu, Çoğaltma İzleyicisi'ni kullanarak görüntüleyebileceğiniz aracı geçmişine yazılır. Daha fazla bilgi için bkz. İzleme Çoğaltması.
Örnek (RMO)
Bu örnek, satır sayısı doğrulaması için bir işlemsel yayına yönelik tüm abonelikleri işaretler.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksProductTran";
string publicationDbName = "AdventureWorks2022";
TransPublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new TransPublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// If we can't get the properties for this publication,
// throw an application exception.
if (publication.LoadProperties())
{
// Initiate validataion for all subscriptions to this publication.
publication.ValidatePublication(ValidationOption.RowCountOnly,
ValidationMethod.ConditionalFast, false);
// If not already running, start the Distribution Agent at each
// Subscriber to synchronize and validate the subscriptions.
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(
"Subscription validation could not be initiated.", ex);
}
finally
{
conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksProductTran"
Dim publicationDbName As String = "AdventureWorks2022"
Dim publication As TransPublication
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for the publication.
publication = New TransPublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' If we can't get the properties for this publication,
' throw an application exception.
If publication.LoadProperties() Then
' Initiate validataion for all subscriptions to this publication.
publication.ValidatePublication(ValidationOption.RowCountOnly, _
ValidationMethod.ConditionalFast, False)
' If not already running, start the Distribution Agent at each
' Subscriber to synchronize and validate the subscriptions.
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication. " + _
"Ensure that the publication {0} exists on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException( _
"Subscription validation could not be initiated.", ex)
Finally
conn.Disconnect()
End Try
Bu örnek, satır sayısı doğrulaması için belirli bir birleştirme yayını aboneliğini işaretler.
// Define the server, database, and publication names
string publisherName = publisherInstance;
string publicationName = "AdvWorksSalesOrdersMerge";
string publicationDbName = "AdventureWorks2022";
string subscriberName = subscriberInstance;
string subscriptionDbName = "AdventureWorks2022Replica";
MergePublication publication;
// Create a connection to the Publisher.
ServerConnection conn = new ServerConnection(publisherName);
try
{
// Connect to the Publisher.
conn.Connect();
// Set the required properties for the publication.
publication = new MergePublication();
publication.ConnectionContext = conn;
publication.Name = publicationName;
publication.DatabaseName = publicationDbName;
// If we can't get the properties for this merge publication, then throw an application exception.
if (publication.LoadProperties())
{
// Initiate validation of the specified subscription.
publication.ValidateSubscription(subscriberName,
subscriptionDbName, ValidationOption.RowCountOnly);
// Start the Merge Agent to synchronize and validate the subscription.
}
else
{
throw new ApplicationException(String.Format(
"Settings could not be retrieved for the publication. " +
"Ensure that the publication {0} exists on {1}.",
publicationName, publisherName));
}
}
catch (Exception ex)
{
// Do error handling here.
throw new ApplicationException(String.Format(
"The subscription at {0} to the {1} publication could not " +
"be validated.", subscriberName, publicationName), ex);
}
finally
{
conn.Disconnect();
}
' Define the server, database, and publication names
Dim publisherName As String = publisherInstance
Dim publicationName As String = "AdvWorksSalesOrdersMerge"
Dim publicationDbName As String = "AdventureWorks2022"
Dim subscriberName As String = subscriberInstance
Dim subscriptionDbName As String = "AdventureWorks2022Replica"
Dim publication As MergePublication
' Create a connection to the Publisher.
Dim conn As ServerConnection = New ServerConnection(publisherName)
Try
' Connect to the Publisher.
conn.Connect()
' Set the required properties for the publication.
publication = New MergePublication()
publication.ConnectionContext = conn
publication.Name = publicationName
publication.DatabaseName = publicationDbName
' If we can't get the properties for this merge publication, then throw an application exception.
If publication.LoadProperties() Then
' Initiate validation of the specified subscription.
publication.ValidateSubscription(subscriberName, _
subscriptionDbName, ValidationOption.RowCountOnly)
' Start the Merge Agent to synchronize and validate the subscription.
Else
Throw New ApplicationException(String.Format( _
"Settings could not be retrieved for the publication. " + _
"Ensure that the publication {0} exists on {1}.", _
publicationName, publisherName))
End If
Catch ex As Exception
' Do error handling here.
Throw New ApplicationException(String.Format( _
"The subscription at {0} to the {1} publication could not " + _
"be validated.", subscriberName, publicationName), ex)
Finally
conn.Disconnect()
End Try