如何为数据库中内容存储为图像类型的文件生成校验和?

时间:2016-12-02 18:46:31

标签: c# sql-server

我将文档存储在SQL Server 2008表中,其内容类型为image。我想为C#中的每个文件生成校验和,以便我可以确定哪些文件是相同的。

如果我们有整个文件(带文件类型),我知道如何生成校验和,当我们在SQL中将文件内容设置为image时,我不知道如何生成校验和。

1 个答案:

答案 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
)