存储过程

时间:2016-04-18 20:43:58

标签: sql-server tsql

当我的生产数据库已恢复到开发环境时,我遇到了一个问题。在该DB中,我有一个设置SET QUOTED_IDENTIFIER OFF的存储过程。我不确定为什么这样做(我没写过)。执行在生产中工作正常,但是,当我在dev中运行时出现以下错误:

  

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

如果我将其设置为on,则存储过程在dev中运行正常。我确实找到了一些有关重建可能导致此问题的索引的信息。我在桌子上尝试了rebuild all,但没有改变问题。有什么想法吗?

该产品还有SET ANSI_NULLS ONSET NOCOUNT ON

1 个答案:

答案 0 :(得分:0)

使用quoted_identifier

1] SET QUOTED_IDENTIFIER为ON,然后用双引号括起来的字符被视为Identifier.So以下命令将成功。

设置QUOTED_IDENTIFIER GO 创建表dbo。“表” (id int,“Function”VARCHAR(20))GO

如果我们保持SET QUOTED_IDENTIFIER OFF,则上述语句失败。

在生产环境中使用quoted_identifier on创建的对象

2]您可以通过以下查询查找哪个标识符设置为

来查找使用您的生产环境创建的对象

将SET QUTOED_IDENTIFIERS设置为ON:

SELECT OBJECT_NAME _ (object_id)_ FROM sys.sql_modules _ WHERE uses_quoted_identifier = 1

因此,如果您保持quoted_identifier状态,那么您的对象不会在开发环境中创建