Veri ne kadar büyük ve veritabanları ile birbiriniz (ve siz) arasındaki bağlantılar ne kadar hızlı? Bir takım fikirler var:
Veriler bu kadar pratik olacak kadar küçükse SELECT * FROM <table> ORDER BY <pk>
, her DB'de çalışın, sonuçları bir sekmeye veya virgülle ayrılmış dosyaya kaydedin (sonuçta elde edilen dosya boyutunu büyük ölçüde havaya uçurmak için boş alan hizalamayın) ve elde edilen çıktıyı tercih ettiğiniz fark türüyle karşılaştırın winmerge gibi yarar. Bu şekilde tüm verileri kesinlikle karşılaştırıyorsunuz .
Veritabanları birbirini görebiliyorsa (büyük olasılıkla çoğaltma ortağı olarak çalışabildikleri için) ve aralarındaki bağlantı yeterince yüksek bant genişliği ve yeterince düşük gecikme süresine sahipse, bağlı sunucu işlevini kullanabilirsiniz (bkz. Http://msdn.microsoft .com / en-us / library / ms190479.aspx ve ilgili belgeler) birkaç SQL deyimindeki tabloların içeriğini karşılaştırmak ve karşılaştırmak ( <table>
aynı satırları olmayan satırları listelemek <linked_server>.<db>..<table>
ve tam tersi) iki yerel tablonun içeriğini karşılaştırırsınız. Bu potansiyel olarak nispeten yavaş bir seçenektir, ancak otomatikleştirmek için oldukça güçlü bir kontrol olabilir.
Aktarılması gereken veri miktarını büyük ölçüde azaltmak istediğiniz için sağlama toplamlarını kullanmanız gerekiyorsa, daha iyi kalitede karmaları kullanabildiğiniz için işlev ailesinden HASHBYTES
ziyade CHECKSUM
işlevlerini kullanın, böylece eşit şekilde çıktıklarından daha emin olabilirsiniz. Bu daha fazla CPU yoğundur, ancak büyük miktarlarda veri için I / O bağlı olacaksınız zaten CPU bağlı değilsiniz, bu yüzden birçok döngü yedek olacak (ve küçük miktarlar için önemli değil).
Karakter için tüm veri karakterlerini karşılaştırmak ve tüm verileri kapsayan tek bir sağlama toplamını karşılaştırmak arasında bir orta yol olarak SELECT <pk>, HASHBYTES('SHA1', <all-other-fields-concatenated>) ORDER BY <pk>
, her veritabanından dışa aktarabilir ve aynı olup olmadıklarını (veya SELECT HASHBYTES('SHA1', <all-other-fields-concatenated>) ORDER BY <pk>
veri miktarını azaltmak için) bu sonuçları karşılaştırabilirsiniz . ancak çıkışta PK olması, varsa daha az sorguyla farklı satırları tanımlayabileceğiniz anlamına gelir). Tabii ki bu son seçenek, ortalama satırdaki veriler sonuçtaki karmadan daha küçükse anlamsızdır, bu durumda " her şeyi karşılaştır " seçeneği daha verimli olacaktır.