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 R2中的存储过程