我将文档存储在SQL Server 2008表中,其内容类型为image
。我想为C#中的每个文件生成校验和,以便我可以确定哪些文件是相同的。
如果我们有整个文件(带文件类型),我知道如何生成校验和,当我们在SQL中将文件内容设置为image
时,我不知道如何生成校验和。
答案 0 :(得分:0)
您可以在C#程序中生成校验和,并手动将其存储到数据库中。或者您在DB中生成校验和(显而易见)。从SQL Server 2008,您可以使用HASHBYTES
函数生成哈希:
SELECT HASHBYTES('SHA1', t.ImageColumn)
FROM MyTable t
您甚至可以创建一个计算列来创建自动哈希值:
CREATE TABLE MyTable (
Image VARBINARY(MAX),
ImageHash AS HASHBYTES('SHA1', Image)
)
如果您希望以SELECT
性能(较慢)交换INSERT
性能(更快),则可以保留计算列:
CREATE TABLE MyTable (
Image VARBINARY(MAX),
ImageHash AS HASHBYTES('SHA1', Image) PERSISTED
)