Visual Studio数据比较少列

Dan*_*roy 5 sql-server visual-studio data-comparison

我的项目目前有一个包含几个表的数据库,其中最重要的是一个具有非常大的条目的二进制列(表示序列化的C#对象).生产数据库中有大量条目,并且在调试时,通常需要将这些条目下拉到本地开发数据库中(因为远程调试似乎不起作用,这是一个单独的问题).

如果我尝试将此表上的本地数据库和生产数据库与所有列进行比较,则比较可能需要长达一个小时,或最终超时,但这在过去是有效的,并允许我下载条目并成功调试它们.如果我比较所有表列而不是二进制数据列,则比较几乎是即时的,但该列不会转移到生产数据库.

我的问题是:有没有办法在两个表之间运行数据比较,排除比较本身的特定列(其他字段提供足够的信息以在没有它的情况下区分)但在更新目标数据库时包括它?

Bri*_*ler -1

您可以在大字段上使用哈希函数varbinary并进行比较。 HASHBYTESMD5 是一种很好的比较方法,因为它不太可能为两个不同的输入生成相同的哈希值。问题是,HASHBYTES仅适用于最大 8000 字节的字段。不过,可以通过创建函数来解决一些问题。一些张贴在这里:

SQL Server 2008 和 HashBytes

您可以选择在插入或更新时使用持久计算字段将哈希值存储在表中。或者您可以在进行比较查询时生成哈希值。