1222死锁图中的ClientOption1和ClientOption2是什么意思?

Sid*_*war 8 sql-server deadlock

我在 MSDN 文章中发现了以下内容:

客户端选项1 和客户端选项2。设置此客户端连接的选项。这是一个位掩码,其中包含有关通常由 SET 语句(例如 SET NOCOUNT 和 SET XACTABORT)控制的选项的信息。

我在哪里可以找到有关它们的更多信息?例如,在我的死锁图中,它们具有以下值:

clientoption1="673185824" clientoption2="128056"
Run Code Online (Sandbox Code Playgroud)

我能从中推断出什么信息?

Cha*_*ace 4

该信息虽然没有正式记录,但可以从未记录但众所周知的spt_values表中查询

-- for clientoptions1
SELECT number,  CONVERT(binary(4), number, 1) AS hex, name,
CASE WHEN @@OPTIONS & number = number THEN 'ON' ELSE 'OFF' END AS value
FROM master.dbo.spt_values
WHERE type = N'D2'
AND number > 0
ORDER BY number;

-- for clientoptions2
SELECT number, CONVERT(binary(4), number, 1) AS hex, name,
CASE WHEN @@OPTIONS & number = number THEN 'ON' ELSE 'OFF' END AS value
FROM master.dbo.spt_values
WHERE type = N'SOP'
AND number > 0
ORDER BY number;
Run Code Online (Sandbox Code Playgroud)

每个值都是字段中的一个位,因此您可以使用如下方式查询它

CONCAT('SET ANSI_PADDING ', CASE WHEN clientoptions1 & 8192 > 0 THEN 'ON' ELSE 'OFF' END)
Run Code Online (Sandbox Code Playgroud)

埃里克·达林(Erik Darling)在博客中谈到了这一点。