我有一个相当尴尬的问题:
两周以来,每当我使用我的 SQL 脚本更新/创建存储过程后,当这些存储过程运行时,它们就会因上述错误而失败。
其他处理这个问题的帖子对我没有帮助。
这里有一些参数,有助于排除不适用于我的情况的常见解决方案:
我的存储过程脚本可以在我的笔记本电脑(SQL Server 2012、Windows Server 2008 R2)上完美运行。
我的存储过程脚本在任何其他机器上正确创建存储过程(这是我们的构建机器,安装了 SQL Server 2012;我们的 TEST 服务器,安装了 SQL Server 2005,我们的 PROD 服务器,安装了 SQL Server 2005)。但是,存储过程不会在我以外的任何其他机器上运行。
我在我的机器上使用我们的生产 SQL Server (SQL Server 2005) 的数据库备份(就像这里的任何其他机器一样)。
即使是最基本的存储过程也会失败(例如
DELETE myTable WHERE ID = @delID
)。在我检查过的每个 SQL Server 安装中,引用标识符
OFF
在服务器和数据库级别都设置为 (!)。那么为什么我的存储过程突然需要将此选项设置为ON
?我
SQLCMD
用来运行我的脚本。这使我可以选择在USE
语句中动态设置服务器实例的数据库名称。我的脚本只包含一个
USE
语句,并且紧跟在ALTER PROCEDURE
;之后。或者IF EXISTS (...) DROP PROCEDURE ... GO; CREATE PROCEDURE ...
这一切都工作了好几年,但突然,从两周前开始,用我的脚本创建的存储过程突然失败了。
我知道我可以在我的脚本中手动设置QUOTED_IDENTIFIER
-ON
但我不想。这里有问题。我想知道那个问题是什么。
这里发生了什么事?