小编hoo*_*tor的帖子

是否可以计算给定 SQL 语句的 SQL Server sql_handle?

以下站点提到的sql_handle是整个批处理文本的 MD5 哈希

https://techcommunity.microsoft.com/t5/sql-server/2-0-sql-handle-and-plan-handle-explained/ba-p/383204

但是,我无法手动计算它。从dm_exec_query_stats我们判断下面的语句有以下几点sql_handle

SQL: (@P1 bigint)SELECT NID MimeTypeID, Name FROM DDocumentClass WHERE Type = @P1
SQL_HANDLE: 0x02000000CA17931BEF7F24A1787BF580EA365A56408697B30000000000000000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

以下 Ruby 脚本计算 MD5。

require 'digest'

sql1 = 'SELECT NID MimeTypeID, Name FROM DDocumentClass WHERE Type = @P1'
sql2 = '(@P1 bigint)SELECT NID MimeTypeID, Name FROM DDocumentClass WHERE Type = @P1'

puts Digest::MD5.hexdigest sql1
puts Digest::MD5.hexdigest sql2
Run Code Online (Sandbox Code Playgroud)

输出:

81707e73438befe82957c766dca86799
2652dc1d05e927ac7c5bfc985a3d1483
Run Code Online (Sandbox Code Playgroud)

必须有更多的算法。

我们可以计算出Oracle 的SQL_ID,我希望也能计算出SQL Server 的SQL_HANDLE。

sql-server

2
推荐指数
1
解决办法
98
查看次数

标签 统计

sql-server ×1