4

ストアド プロシージャの実行時に次のエラーが発生しました。

次の SET オプションの設定が正しくないため、INSERT が失敗しました: 'QUOTED_IDENTIFIER'。計算列のインデックス付きビューやインデックス、フィルター選択されたインデックス、クエリ通知、XML データ型メソッド、空間インデックス操作で使用する SET オプションが正しいことを確認します。

プロシージャーは、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

SELECTfrom ステートメント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 この特定のスクリプトを実行した後、他の多くのファイルも実行されることが判明しました。そのうちの 1 つは、QUOTED_IDENTIFIER を OFF に設定してストアド プロシージャを再作成しました。

ご協力ありがとうございました

4

1 に答える 1

0

テーブルとビューの定義も、引用符付き識別子をオンにして作成されていることを確認してください。

于 2014-01-04T17:38:10.383 に答える