SQL服务器:INSERT /更新/删除失败,因为下列SET选项的设置不正确:“QUOTED_IDE

2019-09-28 02:21发布

我有这个比较尴尬的问题:

现在半个月,每当我已经更新了使用我的SQL脚本/创建存储过程后,当这些存储过程运行,未能以上述错误。

解决这一问题的其他职位在我的情况没有帮助。

下面是一些参数,有助于排除那些没有在我的案件,不适用共同的解决办法:

  1. 我的存储过程的脚本在我的笔记本电脑(SQL Server 2012中,在Windows Server 2008 R2)工作得很好。

  2. 我的存储过程脚本任何其他机器上正确地创建存储过程(这是我们构建机器,安装SQL Server 2012中,我们的测试服务器,与SQL Server 2005安装,和我们的PROD服务器,安装SQL Server 2005中)。 然而,存储过程不会将任何其他机器上比我跑。

  3. 我在我的机器上使用我们生产的SQL Server(SQL Server 2005中)的数据库备份(像任何其他机器在这里所​​做的)。

  4. 即使是最基本的存储过程失败(例如DELETE myTable WHERE ID = @delID )。

  5. 在每一个SQL Server安装我检查,带引号的标识符设置为OFF (!),无论在服务器和数据库级别。 那么,为什么我的存储过程中突然需要有这个选项设置为ON

  6. 我使用SQLCMD运行我的脚本。 这给了我一个选项,以动态地设置服务器实例的数据库名称在USE语句。

  7. 我只脚本包含一个USE后声明中,右ALTER PROCEDURE ; 或者可替换地IF EXISTS (...) DROP PROCEDURE ... GO; CREATE PROCEDURE ... IF EXISTS (...) DROP PROCEDURE ... GO; CREATE PROCEDURE ...

这一切都工作多年了,但突然,因为两个星期前,我的脚本创建存储过程突然失败。

我知道我可以手动设置QUOTED_IDENTIFIERON在我的脚本-但我不想。 也有一些是错在这里。 我想知道是什么问题。

这里发生了什么事?

Answer 1:

SQLCMD将quoted_identifier选项默认为关闭。 你可以用-I选项改变它。



Answer 2:

难道说你的存储过程,现在做的事情对已添加索引的表? 我有同样的问题,这对计算列的新指标的到期。



文章来源: SQL Server: INSERT/UPDATE/DELETE failed because the following SET options have incorrect settings: ‘QUOTED_IDENTIFIER’