HASHBYTES功能

时间:2017-08-06 09:04:52

标签: sql-server

以下脚本提供以下错误消息:

" Msg 8152,Level 16,State 10,Line 10 字符串或二进制数据将被截断。"

 select convert(varbinary(max),HASHBYTES('md2',(select [Secteur]
  ,[Hub]
  ,[Group]
  ,[Enterprise]
  ,[Manager]
  ,[BM]
   from [Hubs] for XML auto)))

我提到输入行的最大长度是123个字节。

任何想法为什么这条消息? (我使用SQL Server 2014)非常感谢

1 个答案:

答案 0 :(得分:1)

HASHBYTES在SQL 2014及更早版本中限制为8000个字符输入。它不受SQL 2016+的限制。我怀疑你转换为XML时的查询超过8000字节。

您可以使用未记录的fn_repl_hash_binary在sql 2014中获取MD5哈希(但不是MD2)以获取长输入数据,但我不推荐它。它不仅没有文档,而且根本不适用于Azure SQL。

我相信您需要使用CLR函数来计算SQL 2014中的大型二进制数据的MD2。