如何在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
相关产品推荐
相关产品推荐

