【发布时间】:2015-10-21 10:18:37
【问题描述】:
如何在 SQL Server 中计算图像列的校验和(无论是 MD5 还是其他)?即类似
SELECT HASHBYTES('md5', d.data)
FROM ATTACHMENTDATA D
8116 参数数据类型图像对于 hashbytes 的参数 2 无效 功能
尝试:
SELECT HASHBYTES('md5', CONVERT(nvarchar(4000), d.data))
FROM ATTACHMENTDATA D
结果:
529 从数据类型 image 到 nvarchar 的显式转换不是 允许
如果这很重要,我会使用 Microsoft SQL Server 10.50.4000 (SQL Server 2008 R2)
【问题讨论】:
-
image自 2005 年以来已弃用(我认为),您应该使用varbinary(max)。此外,您尝试将二进制数据转换为文本是没有意义的 -
你将如何使用这个校验和? SQL Server 具有安全签名数据的功能,而更改检测校验和最好在将值存储到数据库之前计算
-
请注意,
hashbytes在输入参数中可以接受不超过 8000 个字节。根据数据及其用途,hashbytes可能合适或不合适。
标签: sql-server sql-server-2008 tsql