SQL Server 2008 SET QUOTED_IDENTIFIER OFF 问题

Posted

技术标签:

【中文标题】SQL Server 2008 SET QUOTED_IDENTIFIER OFF 问题【英文标题】:SQL Server 2008 SET QUOTED_IDENTIFIER OFF problem 【发布时间】:2011-04-11 21:40:41 【问题描述】:

我有一个存储过程,里面有一个分页查询,它根据我所在的页面返回一组结果。

我有

DECLARE @Products TABLE()... then INSERT INTO @Products SELECT ROW_NUMBER()...

一切正常,但是当我的产品名称中包含单引号或双引号时,它不会显示在结果中。 SET QUOTED_IDENTIFIER 为 OFF。当我删除引号时它可以工作,但是当我再次添加它们时它不会显示出来。

我的解决方案是什么?

【问题讨论】:

您在哪里/如何查看结果?你试过 SSMS 吗? 你是如何传入 Product 的值的?它也是一个变量还是您正在动态构建插入语句?我认为提供更完整的表架构和示例查询将有助于回答您的问题。 您能否发布更多关于您的存储过程正在做什么的信息(实际代码)?我们现在所拥有的信息并没有为我们提供足够的信息来识别问题。获得此信息后,我们可以与您一起解决问题,以便我们以令人满意的方式结束此问题。 您是否在任何专栏中使用全文?如果是这样,您可以查看您的口音敏感度设置。 【参考方案1】:

您的 proc 是否会调用 indexed view?

索引视图取决于将 SET QUOTED_IDENTIFIER 设置为 ON。如果使用 WITH (NOEXPAND) 显式使用它们,则 proc 会适得其反,否则它也可能会停止,因为它会将其视为普通视图。请参阅以下article on MSDN。

存储过程和触发器应该 被写成与六个 SET 一起工作 支持所需的选项 视图和计算的索引 列。查询优化器不 在视图上使用索引或计算 SELECT 语句中的列 由存储过程执行或 当 SET 选项为 设置错误。插入、更新或 存储中的 DELETE 语句 修改的过程或触发器 存储在索引视图中的数据值 或计算列生成错误。

【讨论】:

以上是关于SQL Server 2008 SET QUOTED_IDENTIFIER OFF 问题的主要内容,如果未能解决你的问题,请参考以下文章

SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思 sql server 2005 2008

SQL Server 2008 的双倍同时事务处理

SQL Server 2008 R2:计数字符匹配

拆分逗号分隔参数传递给SQL Server 2008 R2中的存储过程

sql server 2008,SP_OACreate手动执行成功,代理作业定时执行失败?

SP 执行时 SQL Server 2008 中的 QUOTED IDENTIFIER 错误