Sql server SQL Server:插入/更新/删除失败,因为以下集合选项的设置不正确:‘;带引号的标识符’;

Sql server SQL Server:插入/更新/删除失败,因为以下集合选项的设置不正确:‘;带引号的标识符’;,sql-server,stored-procedures,sqlcmd,quoted-identifier,Sql Server,Stored Procedures,Sqlcmd,Quoted Identifier,我有一个相当棘手的问题: 两个星期以来,每当我使用SQL脚本更新/创建存储过程之后,当这些存储过程运行时,它们都会因上述错误而失败 其他处理这个问题的帖子对我的情况没有帮助 以下是一些参数,有助于排除在我的案例中不适用的常见解决方案: 我的存储过程脚本在我的笔记本电脑上完美地工作(SQL Server 2012、Windows Server 2008 R2) 我的存储过程脚本可以在任何其他计算机上正确创建存储过程(这是我们的生成计算机,安装了SQL Server 2012;我们的测试服务器,安装

我有一个相当棘手的问题:

两个星期以来,每当我使用SQL脚本更新/创建存储过程之后,当这些存储过程运行时,它们都会因上述错误而失败

其他处理这个问题的帖子对我的情况没有帮助

以下是一些参数,有助于排除在我的案例中不适用的常见解决方案:

  • 我的存储过程脚本在我的笔记本电脑上完美地工作(SQL Server 2012、Windows Server 2008 R2)

  • 我的存储过程脚本可以在任何其他计算机上正确创建存储过程(这是我们的生成计算机,安装了SQL Server 2012;我们的测试服务器,安装了SQL Server 2005;我们的PROD Server,安装了SQL Server 2005)。但是,存储过程不会在我的计算机以外的任何其他计算机上运行

  • 我正在我的机器上使用生产SQL Server(SQL Server 2005)的数据库备份(就像这里的任何其他机器一样)

  • 即使是最基本的存储过程也会失败(例如,
    DELETE myTable,其中ID=@delID

  • 在我检查过的每个SQL Server安装中,服务器和数据库级别上的quoted identifier都设置为
    OFF
    (!)。那么,为什么我的存储过程突然需要将此选项设置为启用

  • 我正在使用
    SQLCMD
    运行脚本。这使我可以在
    USE
    语句中动态设置服务器实例的数据库名称

  • 我的脚本只包含一个
    USE
    语句,就在
    ALTER过程之后
    ;或者,
    如果存在(…)删除过程。。。去;创建过程…

  • 这一切工作了好几年,但从两周前开始,用我的脚本创建的存储过程突然失败

    我知道我可以在脚本中将
    QUOTED_IDENTIFIER
    手动设置为
    ON
    ,但我不想这样做。这里有点不对劲。我想知道那个问题是什么


    这里发生了什么?

    SQLCMD默认情况下将QUOTED_标识符选项设置为OFF。您可以使用-I选项进行更改。

    SQLCMD默认情况下将QUOTED_标识符选项设置为OFF。您可以使用-I选项对其进行更改。

    您的存储过程现在是否正在添加索引的表上执行某些操作?我也遇到了同样的问题,这是由于计算列上有一个新的索引。

    是否您的存储过程现在正在添加索引的表上执行某些操作?我也遇到了同样的问题,这是由于计算列上有一个新的索引。

    是的,但这不是我要寻找的解决方案。它应该在不添加-I选项的情况下完美地工作。这已经奏效多年了。但突然之间,情况并非如此。我想知道这种行为的原因,我不只是想避开它。对不起,我不能说两周前你的机器突然发生了什么变化。我给了你最好的解释,任何人都不能完全访问你的机器。谢谢,迪恩,你的帮助。当然,我明白。但我认为一定有一些SS跟踪工具可用,使我能够追踪这种行为的原因。错误没有给出导致它发生的原因。我想调查将SS恢复到其原始功能状态的原因。是的,但这不是我想要的解决方案。它应该在不添加-I选项的情况下完美地工作。这已经奏效多年了。但突然之间,情况并非如此。我想知道这种行为的原因,我不只是想避开它。对不起,我不能说两周前你的机器突然发生了什么变化。我给了你最好的解释,任何人都不能完全访问你的机器。谢谢,迪恩,你的帮助。当然,我明白。但我认为一定有一些SS跟踪工具可用,使我能够追踪这种行为的原因。错误没有给出导致它发生的原因。我想调查将SS恢复到其原始运行状态的原因。我的客户不使用计算列。恐怕我们的问题不是这样的。我唯一的另一个建议是是否有一个带有索引的视图。我遇到的情况是,我们有两个应用程序在同一个数据库上运行。一个可以处理视图和/或计算列上的索引,另一个(显然使用Quoted Identifier=off)不能。我的客户不使用计算列。恐怕我们的问题不是这样的。我唯一的另一个建议是是否有一个带有索引的视图。我遇到的情况是,我们有两个应用程序在同一个数据库上运行。一个可以处理视图和/或计算列上的索引,另一个(显然使用Quoted Identifier=off)不能。