执行存储过程时出现此错误:
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。
感谢您的帮助
答案 0 :(得分:0)
快乐确保表和视图定义也是使用带引号的标识符创建的。