执行存储过程时出现此错误:
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/