4

我在执行存储过程时遇到此错误:

INSERT 失败,因为以下 SET 选项的设置不正确:“QUOTED_IDENTIFIER”。验证 SET 选项对于索引视图和/或计算列上的索引和/或过滤索引和/或查询通知和/或 XML 数据类型方法和/或空间索引操作是否正确。

创建过程时将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

SELECT来自的声明sys.sql_modules显示以uses_quoted_identifiers某种方式设置为0.

我已经尝试执行以下代码。它运行在one batch.

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

但这无济于事。

每个会话都是使用QUOTED_IDENTIFIER设置为 1 创建的:

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

有什么想法吗?

UPD 原来在运行这个特定的脚本之后,还有很多其他的文件。其中一个刚刚重新创建了将 QUOTED_IDENTIFIER 设置为 OFF 的存储过程。

谢谢您的帮助

4

1 回答 1

0

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

于 2014-01-04T17:38:10.383 回答