Ssis SQL Server集成服务-增量数据加载哈希比较

Ssis SQL Server集成服务-增量数据加载哈希比较,ssis,hash,compare,etl,Ssis,Hash,Compare,Etl,使用SQL Server Integration Services(SSIS)执行增量数据加载,比较要导入的行数据和现有行数据的哈希。我用的是: 创建用于比较的SHA512哈希。当尝试使用条件拆分任务(表达式为NEW\u hash==OLD\u hash)比较数据库中的数据导入哈希和现有哈希时,我在输入表达式时遇到以下错误: The data type "DT_BYTES" cannot be used with binary operator "==". The type of one or

使用SQL Server Integration Services(SSIS)执行增量数据加载,比较要导入的行数据和现有行数据的哈希。我用的是:

创建用于比较的SHA512哈希。当尝试使用条件拆分任务(表达式为NEW\u hash==OLD\u hash)比较数据库中的数据导入哈希和现有哈希时,我在输入表达式时遇到以下错误:

The data type "DT_BYTES" cannot be used with binary operator "==". The type of one or both of the operands is not supported for the operation. To perform this operation, one or both operands need to be explicitly cast with a cast operator.
在比较之前尝试将每列强制转换为字符串(DT_WSTR,64),导致截断错误

有没有更好的方法,或者我遗漏了一些小细节


谢谢

您是否尝试将长度扩展到64以外?我相信DT_字节的有效长度可以达到8000个字符。我根据以下内容验证了DT_字节的合法强制转换目标:

  • DT_I4
  • DT_UI4
  • DT_I8
  • DT_UI8
  • 德图街
  • DT_WSTR
  • DT_GUID
  • dtu图像

  • 我还在BIDS中运行了一个测试,并验证了当我将它们转换为足够长的数据类型时,比较这些值是没有问题的。

    SHA512有点大,因为实际冲突的几率是1/2^256。SHA512始终输出512位,即64字节。我有一个类似的情况,我检查传入二进制文件的散列。我使用查找转换而不是条件拆分

    此帖子较旧,但为了帮助其他用户

    答案是,在SSI中,不能使用==运算符比较二进制数据

    我所看到的是,人们通常会将散列值转换(并存储)为varchar或nvarchar,这可以在SSI中进行比较


    我相信其他用户已经用“截断”正确地回答了您的问题。

    您是否尝试将其强制转换为int?