sql-server - SQL Server 2008 SP 执行时出现 QUOTED IDENTIFIER 错误

标签 sql-server sql-server-2008 quoted-identifier

执行存储过程时出现此错误:

INSERT failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations.

创建过程时将 QUOTED_IDENTIFIER 标志设置为 ON

IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE OBJECT_ID = OBJECT_ID(N'sp_procedure') AND TYPE IN (N'P', N'PC'))
  BEGIN
    DROP PROCEDURE  [dbo].[sp_procedure]
  END
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[sp_procedure]
(   
     @param_1 XML
    ,@param_2 INT
)
AS
BEGIN
   -- CODE
END

sys.sql_modules 中的 SELECT 语句显示 uses_quoted_identifiers 以某种方式设置为 0

我已经尝试执行以下代码。它以一批运行。

SET QUOTED_IDENTIFIER ON; 
EXEC sp_procedure @param_1 = N'<?xml version="1.0" encoding="utf-16"?>
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" />', @param_2= 51326

但这并没有帮助。

创建每个 session 时,QUOTED_IDENTIFIER 设置为 1:

set quoted_identifier on 
set arithabort off 
set numeric_roundabort off
set ansi_warnings on

有什么想法吗?

UPD 事实证明,运行这个特定脚本后,还运行了很多其他文件。其中之一只是重新创建了存储过程,并将 QUOTED_IDENTIFIER 设置为 OFF。

感谢您的帮助

最佳答案

请确保表和 View 定义也是使用带引号的标识符创建的。

关于sql-server - SQL Server 2008 SP 执行时出现 QUOTED IDENTIFIER 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20884831/

相关文章:

SQL - 使用窗口和 case 语句展平表

sql - 每分钟计算两列的行数

mysql - 将CTE存储过程转换为Mysql兼容数据库查询

sql - 在 CREATE VIEW 之前使用语句

sql - 将 varchar 转换为数据类型 numeric 时出现算术溢出错误。 '10' <= 9.00

sql-server - SQL SERVER - 通过 SQLCMD 和 MSSQL 运行 SQL 脚本时相同的代码不同的结果

sql语句错误: "column .. does not exist"

sql-server - ORA-01005 : null password given; logon denied"Error when trying

.net - 如何解决我的 Azure 角色中与 SQL Azure 的连接突然丢失的问题?

sql - 错误 : Column does not exist