別のストアド プロシージャ [B] を作成するストアド プロシージャ [A] があります。
[A] エンド ユーザーによって実行されることはなく、パラメーターやその他の信頼できないデータはありません。代わりに、複雑な SP [B] の作成を自動化するために単純に使用しています。[A] 内部を変更しない限り、常に同じ結果になります。したがって、これは安全だと思います。
[B] xml を使用するため、Quoted_Identifiers を ON にする必要があります。
生成された SP をコピーして貼り付けると正常に動作しますが、[A] に EXEC で作成させると、実行時に SP が失敗します。
[B] の中に追加してみましSET QUOTED_IDENTIFIERS ON
たが、目立った効果はありません。
sp_ExecuteSQL を使用した場合も同じ問題が発生します [B] を呼び出す前に設定しようとしましたが、それも効果がないようです (ただし、常にオンになっているコンテキストではなぜでしょうか)
私の推測では、EXEC と sp_ExecuteSQL は常に設定 OFF を使用し、SET コマンドは SQL エンジン自体ではなくパーサーによって処理されます。では、EXEC で proc を正しく作成するにはどうすればよいでしょうか。