INSERT失败,因为以下SET选项具有不正确的设置:'QUOTED_IDENTIFIER'

时间:2016-11-08 12:31:48

标签: sql-server

我们在执行存储过程时有时会收到以下消息,之后没有任何更改删除并重新执行存储过程它正常工作。

  

DBCORE INSERT失败,因为以下SET选项的设置不正确:'QUOTED_IDENTIFIER'。验证SET选项是否正确,以便与计算列和/或筛选索引和/或查询通知和/或XML数据类型方法和/或空间索引操作的索引视图和/或索引一起使用。

请帮助我们理解这一点。

4 个答案:

答案 0 :(得分:22)

context: application: rundeck description: "normal users will only have read permissions" for: project: - match: name: '.*' allow: [read] system: - match: name: '.*' allow: [read] by: group: user --- context: project: '.*' description: "normal users will only have read permissions" for: resource: - equals: kind: 'node' allow: [read,refresh] - equals: kind: 'job' allow: [read] - equals: kind: 'event' allow: [read] job: - match: name: '.*' allow: [read] node: - match: nodename: '.*' allow: [read,refresh] by: group: user 是一个"粘性"选项,以便在运行时使用创建过程时生效的设置。由于未进行任何过程更改,因此错误表明存储过程是使用QUOTED_IDENTIFIER创建的,并且创建/删除了错误消息中提到的类型之一的索引。

使用QUOTED_IDENTIFIER OFFQUOTED_IDENTIFIER ON的会话重新创建或更改存储过程,以避免问题继续发生。

答案 1 :(得分:3)

在我的情况下,以批量模式加载存储过程时,必须在sqlcmd.exe命令行中添加-I参数。

答案 2 :(得分:2)

我遇到了这个问题,所以我在MS SQL中将所有作业步骤都创建到了存储过程中。使用模板时,它会自动具有以下内容

GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON

答案 3 :(得分:2)

如果有人通过Visual Studio数据库项目进行部署后遇到此错误,则值得检查存储过程文件的属性。如果将其设置为项目默认值,请转到数据库项目的属性>“项目设置”,然后单击“数据库设置”按钮。

您可以默认打开这两个值(和其他值),如下面的屏幕快照所示。

enter image description here

仅当您对过程进行更改时,这才可以解决该问题;模式比较和后续更新不会更改存储过程中的QUOTED_IDENTIFIER,除非对过程主体进行了更改。它将防止该问题在随后更新的架构上再次发生。