SQL Server 2008 SET QUOTED_IDENTIFIER OFF问题

时间:2011-04-11 21:40:42

标签: sql sql-server sql-server-2008 sql-server-2008-r2

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

我有

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

一切正常,但当我的产品中有一个带有单引号或双引号的产品时,它不会显示在结果中。 SET QUOTED_IDENTIFIER关闭。当我删除引号时它会起作用,但是当我再次添加引号时它就不会显示出来。

我的解决方案是什么?

1 个答案:

答案 0 :(得分:1)

你的proc是否有机会召唤indexed view

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

  

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