@@OPTIONS (Transact-SQL)
返回有关当前 SET 选项的信息。
语法
@@OPTIONS
返回类型
integer
注释
这些选项可能来自对 SET 命令的使用或来自 sp_configure user options 值。 通过 SET 命令配置的会话值将覆盖 sp_configure 选项。 许多工具(如 Management Studio 会自动配置设置选项。 每个用户都有一个表示配置的 @@OPTIONS 函数。
你可以通过使用 SET 语句更改特定用户会话的语言和查询处理选项。 @@OPTIONS 仅可检测到设置为“ON”或“OFF”的选项。
The@@OPTIONS 函数返回这些选项的位图,转换为一个以 10 为基数(十进制)的整数。 位设置存储在主题 配置 user options 服务器配置选项 中所描述的位置。
要对 @@OPTIONS 值进行解码,则将由 @@OPTIONS 返回的整数转换为二进制,然后在上表中查询值。 例如,如果 SELECT @@OPTIONS; 返回值 5496,使用 Windows 程序员计算器 (calc.exe) 将十进制 5496 转换为二进制。 结果为 1010101111000。 最左侧字符(二进制 1、2 和 4)是 0,表明 IMPLICIT_TRANSACTIONS 和 CURSOR_CLOSE_ON_COMMIT 设置为 off。 下一项(位于 1000 位置的 ANSI_WARNINGS)设置为 on。 继续使用整个位图并沿着选项列表向下进行操作。 当最右边的选项设置为 0,则它们会被类型转换截断。 位图 1010101111000 实际上是 001010101111000,以表示所有 15 个选项。
示例
A.有关更改如何影响行为的演示
以下示例表明在 CONCAT_NULL_YIELDS_NULL 选项的两个不同设置条件下连接行为的差别。
SELECT @@OPTIONS AS OriginalOptionsValue;
SET CONCAT_NULL_YIELDS_NULL OFF;
SELECT 'abc' + NULL AS ResultWhen_OFF, @@OPTIONS AS OptionsValueWhen_OFF;
SET CONCAT_NULL_YIELDS_NULL ON;
SELECT 'abc' + NULL AS ResultWhen_ON, @@OPTIONS AS OptionsValueWhen_ON;
B.测试客户端的 NOCOUNT 设置
以下示例设置 NOCOUNT ON 并测试 @@OPTIONS 的值。 NOCOUNT ON 选项可防止将会话中每一个语句的有关受影响行数的消息发送回请求的客户端。 @@OPTIONS 的值设置为 512 (0x0200)。 这表示 NOCOUNT 选项。 下面的示例测试客户端是否启用了 NOCOUNT 选项。 例如,它可以帮助跟踪客户端的性能差异。
SET NOCOUNT ON
IF @@OPTIONS & 512 > 0
RAISERROR ('Current user has SET NOCOUNT turned on.', 1, 1)