如何将查询哈希转换为 uint64?

use*_*632 3 sql-server extended-events

如何将查询哈希字符串“0x9F37D9B585242D49”转换为扩展事件过滤器所需的 uint64?由于值变为负值,转换为 bigint 不起作用。

event
sql_statement_completed

filter
field : sqlserver.query_hash
operator : equal_uint64
value ???
Run Code Online (Sandbox Code Playgroud)

Dav*_*oft 5

TSQL 没有无符号 64 位整数,但 .NET 有。

var hash = 0x9F37D9B585242D49;
Console.WriteLine(hash);
Run Code Online (Sandbox Code Playgroud)

输出

11472877949395676489
Run Code Online (Sandbox Code Playgroud)

您还可以过滤query_hash_signed并提供一个有符号的 64 位整数,TSQL 可以生成该整数

select cast(0x9F37D9B585242D49 as bigint)
Run Code Online (Sandbox Code Playgroud)

输出

-6973866124313875127
Run Code Online (Sandbox Code Playgroud)