Sql server 2005 更新失败,因为以下设置选项的设置不正确:';带引号的标识符';

Sql server 2005 更新失败,因为以下设置选项的设置不正确:';带引号的标识符';,sql-server-2005,Sql Server 2005,我的更新存储过程有问题。错误是: 更新失败,因为以下集合选项的设置不正确:“QUOTED_IDENTIFIER”。验证集合选项是否正确,可用于索引视图和/或计算列上的索引和/或查询通知和/或xml数据类型方法 SQL状态:42000 本地错误:1934 不幸的是,此表没有索引视图、计算列或查询通知。此存储过程在过去几天内运行良好,从今天起一直返回此错误 是否有任何有助于确定问题的建议 注意:如果我将quoted_标识符设置为ON并重新运行创建过程,问题将得到解决(目前)。但我想了解是什么首先引发

我的更新存储过程有问题。错误是:

更新失败,因为以下集合选项的设置不正确:“QUOTED_IDENTIFIER”。验证集合选项是否正确,可用于索引视图和/或计算列上的索引和/或查询通知和/或xml数据类型方法

SQL状态:42000
本地错误:1934

不幸的是,此表没有索引视图、计算列或查询通知。此存储过程在过去几天内运行良好,从今天起一直返回此错误

是否有任何有助于确定问题的建议

注意:如果我将
quoted_标识符设置为
ON
并重新运行
创建过程,问题将得到解决(目前)。但我想了解是什么首先引发了这个问题。

一些想法:

索引重建了吗?如果使用DMO进行索引维护,则引用的\u标识符将不会始终保留。这可能是一个痛苦的追踪,是一个特别的问题是SQL Server 2000,直到SP4左右


但是,我不久前也在SQL Server 2005上看到过。我们无法通过关闭引号标识符来创建索引视图。我刚刚尝试过,如果SQL 2005关闭,它会立即抛出一个错误:

无法创建索引。创建对象“SmartListVW”时禁用了以下设置选项:“QUOTED_IDENTIFIER”

正如gbn所说,重建索引必须是它关闭的唯一其他方式

我看到很多文章说,在创建视图索引之前,它必须处于启用状态。否则,在插入、更新表时会出现错误,但在这里我可以直接得到错误,因此sql引擎将不允许通过将其设置为off来创建视图索引

我曾经在这里问过一个类似的问题

编辑


我关闭了全局queryexecution(在编辑器中)ANSI设置,并在新编辑器中运行了索引脚本,这次它也抛出了相同的错误。所以很明显,我们不能通过关闭quoted_标识符来在视图上创建索引。

为了避免这个错误,我需要添加

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
对于我的所有存储过程,编辑带有计算列的表

您不需要在进程中添加
集合
,只需在创建过程中使用它,如下所示:

SET ANSI_NULLS, QUOTED_IDENTIFIER ON;
GO

CREATE PROCEDURE dbo.proc_myproc
...

这次聚会我迟到了,但我犯了这个错误,想和大家分享一下

我们的问题是反复出现的,但是随机的,所以我们知道这不是一个错误创建的对象


我们最终找到了Citrix服务器场中一台服务器上的ODBC连接。在该服务器上,所讨论的ODBC已将其引用的_标识符关闭(未选中)。在所有其他服务器上,它按预期进行了检查。我们打开了选项,问题立即得到了解决

我今天在SSMS中运行存储过程时遇到了这个错误。断开与服务器的连接并重新连接新会话解决了我的问题。我正在运行的SP以前从未遇到过此问题。

在作业计划程序
SQL Server代理中运行此查询时,我遇到了相同的错误

UPDATE [Order]
SET OrderStatusID = 100
WHERE OrderStatusID = 200
AND OrderID IN (    
        [...]
)
我解决了从
[订单]
中删除
[
]
字符的问题:

UPDATE Order
SET OrderStatusID = 100
WHERE OrderStatusID = 200
AND OrderID IN (    
        [...]
)

没有更多错误

我在运行SQL代理作业时遇到此错误,该作业有3个步骤
T-SQL
脚本

Msg 1934,Sev 16,状态1,第15行:更新失败,因为 以下设置选项的设置不正确:“引用的\u标识符”。 验证集合选项是否正确用于索引视图和/或 计算列和/或筛选索引和/或查询上的索引 通知和/或XML数据类型方法和/或空间索引 操作。[SQLSTATE 42000]

我补充说


设置ANSI_空值,带引号的_标识符打开到代理作业的顶部,这解决了问题。

请具体说明哪种设置?不仅在计算的ComColumn情况下有效。今天,我在一个存储过程中突然遇到了这个问题,该存储过程使用XML列更新一个表,过去运行得很好。我试图在进程内设置ANSI NULL标志,但没有成功。你的解决方案挽救了这一天。