【发布时间】:2017-03-22 02:06:54
【问题描述】:
我们有时在执行存储过程时收到以下消息,之后没有任何更改删除并重新执行存储过程它工作正常。
DBCORE INSERT 失败,因为以下 SET 选项的设置不正确:“QUOTED_IDENTIFIER”。验证 SET 选项是否适用于索引视图和/或计算列上的索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作。
请帮助我们理解这一点。
【问题讨论】:
标签: sql-server
我们有时在执行存储过程时收到以下消息,之后没有任何更改删除并重新执行存储过程它工作正常。
DBCORE INSERT 失败,因为以下 SET 选项的设置不正确:“QUOTED_IDENTIFIER”。验证 SET 选项是否适用于索引视图和/或计算列上的索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作。
请帮助我们理解这一点。
【问题讨论】:
标签: sql-server
QUOTED_IDENTIFIER 是一个“粘性”选项,因此在创建过程时生效的设置在运行时使用。由于未对过程进行任何更改,因此错误表明存储过程是使用 QUOTED_IDENTIFIER OFF 创建的,并且创建/删除了错误消息中提到的类型之一的索引。
从QUOTED_IDENTIFIER ON 和ANSI_NULLS ON 的会话中重新创建或更改存储过程,以避免出现问题。
【讨论】:
我遇到了这个问题,所以我在 MS SQL 中将所有作业步骤创建到存储过程中。使用模板时,它自动具有以下内容
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
【讨论】:
就我而言,在批量模式下加载存储过程时,我必须在 sqlcmd.exe 命令行中添加 -I 参数。
【讨论】:
QUOTED_IDENTIFIER OFF 以实现向后兼容性,因此当执行的脚本在创建存储过程之前不包含QUOTED_IDENTIFIER ON 时,需要-I 选项。
-I,但添加 -q 就可以了