You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQL脚本中查看QUOTED_IDENTIFIER的当前状态?

查看并恢复QUOTED_IDENTIFIER会话设置的方案

查看当前会话的QUOTED_IDENTIFIER状态

对于不支持@@QUOTED_IDENTIFIER变量的旧版SQL Server,使用DBCC USEROPTIONS可以查看当前会话的所有设置,其中包含QUOTED_IDENTIFIER的当前值:

DBCC USEROPTIONS;

执行后结果集中会有一行记录,SetOption列值为QUOTED_IDENTIFIER,对应的Value列就是当前会话的状态(ON或OFF)。

保存并恢复设置的完整脚本

要实现临时修改设置、执行代码后恢复的需求,可以通过临时表捕获当前值,再进行恢复:

-- 声明变量存储当前状态
DECLARE @CurrentQuotedState VARCHAR(3);

-- 创建临时表存储DBCC结果
CREATE TABLE #SessionOptions (
    SetOption NVARCHAR(128),
    Value NVARCHAR(128)
);

-- 插入会话选项到临时表
INSERT INTO #SessionOptions
EXEC DBCC USEROPTIONS;

-- 提取当前QUOTED_IDENTIFIER值
SELECT @CurrentQuotedState = Value
FROM #SessionOptions
WHERE SetOption = N'QUOTED_IDENTIFIER';

-- 清理临时表
DROP TABLE #SessionOptions;

-- 设置为你的偏好值(示例为ON,可根据需求改为OFF)
SET QUOTED_IDENTIFIER ON;

-- --------------------------
-- 这里执行你自己的业务代码
-- --------------------------

-- 恢复原有设置
IF @CurrentQuotedState = N'ON'
    SET QUOTED_IDENTIFIER ON;
ELSE
    SET QUOTED_IDENTIFIER OFF;

说明

  • master.dbo.spt_values和sys.sysconfigures查询的是服务器级元数据或系统配置,无法反映当前会话的动态设置,因此之前的尝试无法得到正确结果。
  • DBCC USEROPTIONS是专门用于查看当前会话所有SET选项的命令,在所有SQL Server版本中都支持,包括不提供@@QUOTED_IDENTIFIER变量的旧版本。

内容的提问来源于stack exchange,提问作者AngryHacker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:35:20