编写存储过程的脚本,确保/更改 SET 选项,运行 ALTER PROC 以确保设置了 SET QUOTED IDENTIFIER ON。
为什么?
“SET QUOTED IDENTIFIER”的设置是在创建存储过程时定义的,并且对于表始终为“ON”。来源,BOL。
创建表时,QUOTED IDENTIFIER 选项始终在表的元数据中存储为 ON,即使在创建表时该选项设置为 OFF。
创建存储过程时,会捕获 SET QUOTED_IDENTIFIER 和 SET ANSI_NULLS 设置并将其用于该存储过程的后续调用。
可以在服务器级别 (sp_configure 'user options') 或数据库级别 (ALTER DATABASE) 定义连接的默认值。对于 SSMS,它位于“Tools..Options..Query Execution..SQL Server..ANSI”下。它也是客户端库的默认设置(DB-LIb 除外)。
现在,您打开一个 SSMS 查询窗口并开始输入“CREATE PROC..”,然后在您运行代码时它使用 SSMS 设置。
并且 SET QUOTED IDENTIFIER不能在运行时在存储过程中设置。在你不同意之前给我看一个参考......来自上面的 MS BOL 链接:
在存储过程中执行时,不会更改 SET QUOTED_IDENTIFIER 的设置。
您必须努力工作以关闭此功能来运行任何代码......所以最有可能的解决方法是更改或重新创建存储的过程。