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