ストアドプロシージャのスクリプトを作成し、SETオプションを確認/変更し、ALTER PROCを実行して、SET QUOTEDIDENTIFIERONが設定されていることを確認します。
なんで?
「SETQUOTEDIDENTIFIER」の設定は、ストアドプロシージャの作成時に定義され、テーブルの場合は常に「オン」になります。ソース、BOL。
テーブルが作成されると、テーブルの作成時にオプションがOFFに設定されていても、QUOTEDIDENTIFIERオプションは常にテーブルのメタデータにONとして格納されます。
ストアドプロシージャが作成されると、SETQUOTED_IDENTIFIERおよびSETANSI_NULLS設定がキャプチャされ、そのストアドプロシージャの後続の呼び出しに使用されます。
接続のデフォルトは、サーバーレベル(sp_configure'ユーザーオプション')またはデータベースレベル(ALTER DATABASE)で定義できます。SSMSの場合は、[ツール..オプション..クエリ実行..SQLServer..ANSI]の下にあります。これは、クライアントライブラリのデフォルトでもあります(DB-LIbを除く)。
ここで、SSMSクエリウィンドウを開いて「CREATEPROC ..」と入力し始めると、コードを実行するときにSSMS設定が使用されます。
また、SET QUOTED IDENTIFIERは、ストアドプロシージャ内で実行時に設定することはできません。同意しない前にリファレンスを見せてください...上記のMSBOLリンクから:
ストアドプロシージャ内で実行する場合、SETQUOTED_IDENTIFIERの設定は変更されません。
これをオフにしてコードを実行するには、一生懸命努力する必要があります...したがって、最も可能性の高い修正は、ストアドプロシージャをALTERまたは再作成することです。