当我的生产数据库已恢复到开发环境时,我遇到了一个问题。在该DB中,我有一个设置SET QUOTED_IDENTIFIER OFF
的存储过程。我不确定为什么这样做(我没写过)。执行在生产中工作正常,但是,当我在dev中运行时出现以下错误:
INSERT失败,因为以下SET选项的设置不正确:'QUOTED_IDENTIFIER'。验证SET选项是否正确,以便与计算列和/或筛选索引和/或查询通知和/或XML数据类型方法和/或空间索引操作的索引视图和/或索引一起使用。
如果我将其设置为on
,则存储过程在dev中运行正常。我确实找到了一些有关重建可能导致此问题的索引的信息。我在桌子上尝试了rebuild all
,但没有改变问题。有什么想法吗?
该产品还有SET ANSI_NULLS ON
和SET NOCOUNT ON
。
答案 0 :(得分:0)
1] SET QUOTED_IDENTIFIER为ON,然后用双引号括起来的字符被视为Identifier.So以下命令将成功。
设置QUOTED_IDENTIFIER GO 创建表dbo。“表” (id int,“Function”VARCHAR(20))GO
如果我们保持SET QUOTED_IDENTIFIER OFF,则上述语句失败。
2]您可以通过以下查询查找哪个标识符设置为
来查找使用您的生产环境创建的对象将SET QUTOED_IDENTIFIERS设置为ON:
SELECT OBJECT_NAME _ (object_id)_ FROM sys.sql_modules _ WHERE uses_quoted_identifier = 1
因此,如果您保持quoted_identifier状态,那么您的对象不会在开发环境中创建