0

我只是想知道是否可以使用 t-SQL (SQL Server 2012) 为不在数据库中的文件使用 HASHBYTES 存储 MD5 哈希?

我只是想实现上面所说的,而不使用除 T-SQL 之外的任何东西。那就是约束天气或没有更好的方法。这是一个不灵活的约束/要求,只能使用 T-SQL。没有插件没有 powrshell 只有 T-SQL。

任何人都可以提供 T-SQL 代码来实现将某个文件的哈希(无论您想要什么名称)放入表中的字段(使用您喜欢的任何名称)的目标吗?

我知道有些人可能会认为有更好的方法,但更好的方法不是喜欢或不喜欢的选择。因此,请不要提供任何非 100% T-SQL 解决方案或评论。

4

2 回答 2

0
DECLARE @csCommand  varchar(4000);
DECLARE @csResult   varchar(4000);
DECLARE @result     table
    ([ID]       int identity(1,1),
     [Output]   varchar(4000));

SET @csCommand = 'certutil -hashfile ''C:\Temp\MyFile.txt'' MD5';

INSERT INTO @result ([Output])
EXEC master..xp_cmdshell @csCommand

SELECT @csResult=[Output] FROM @result WHERE ID=2;
于 2021-02-10T01:11:21.700 回答
0

看看这是否适合你。(测试文本和二进制文件类型)

Declare @x  varbinary
Declare  @y table ( C1 varbinary(max)) 

SELECT @x = convert(varbinary , BulkColumn )
FROM OPENROWSET (BULK 'c:\temp\MyFile.txt', SINGLE_CLOB) MyFile

select HASHBYTES('MD5', @x) 
insert into @y select  HASHBYTES('MD5', @x)     
select * from @y

output:

0x93B885ADFE0DA089CDF634904FD59F71

msdn 哈希字节参考:

https://msdn.microsoft.com/en-us/library/ms174415.aspx?f=255&MSPPError=-2147217396

于 2016-07-08T05:01:00.780 回答