KB3136496 - FIX: アクセス違反は、クエリが 2014 年と 2016 年SQL Serverシノニムを介して SQLCLR 関数を参照するときに発生します

適用先
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use)

現象

たとえば次のようなシナリオを考えてみます。

  • "決定論的" として宣言されている SQLCLR 関数があり、関数を使用して "定数に置き換える" 最適化を行うことができます。
  • SQLCLR 関数を指すシノニムがあります。
  • テーブル値関数 (TVF) は、シノニムを介して SQLCLR 関数を参照します。

このシナリオでは、アプリケーションがこの TVF に対してクエリを実行すると、アクセス違反が発生し、次のようなエラー メッセージが表示される場合があります。

  • メッセージ 0、レベル 11、状態 0、行 14
  • 現在のコマンドで重大なエラーが発生しました。 結果がある場合は破棄する必要があります。

さらに、SQL Serverエラー ログにエラー メッセージが記録されます。

解決策

SQL Serverのサービス パック情報

この問題は、SQL Serverの次の Service Pack で修正されています。

SQL Server 2016 用 Service Pack 2

SQL Server 2014 用 Service Pack 3

SQL Serverのサービス パックについて:

Service Pack は累積的であり、 最新の Service Pack には新しい修正プログラムと共に、それ以前の Service Pack に含まれていたすべての修正プログラムが含まれています。 このサービス パックの最新の Service Pack と最新の累積的な更新プログラムを適用することをお勧めします。 最新の Service Pack をインストールする前に、以前の Service Pack をインストールする必要はありません。 最新の Service Pack と最新の累積的な更新プログラムの詳細については、次の記事の表 1 を参照してください。

SQL Serverとそのコンポーネントのバージョン、エディション、および更新レベルを決定する方法

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。