KB4459327 - 修正: サーバー監査を有効にし、SQL Serverでメモリ内トランザクションを使用するとエラー 41317 が発生する

適用先
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 2017 Developer on Windows SQL Server 2017 Enterprise on Windows SQL Server 2017 Enterprise Core on Windows SQL Server 2017 Standard on Windows

現象

Microsoft SQL Server 2016 または 2017 のsp_getapplockシステム ストアド プロシージャと共にメモリ内トランザクションを使用するとします。 SCHEMA_OBJECT_ACCESS_GROUP サーバー レベルの監査アクション グループでサーバー監査を有効にすると、次のような "Msg 41317" エラー メッセージが表示されます。

注

メッセージ 41317、レベル 16、状態 4、行 LineNumber
メモリ最適化テーブルまたはネイティブ コンパイル モジュールにアクセスするユーザー トランザクションは、複数のユーザー データベースまたはデータベース モデルおよび msdb にアクセスすることはできません。また、master に書き込むこともできません。

解決策

この問題は、次の SQL Server の累積的な更新プログラムで修正されています。

SQL Server 2017 の累積的な更新プログラム 13

SQL Server 2016 Service Pack 2 の累積的な更新プログラム 3

メモ: この更新プログラムは、データベースにスキーマを作成するアクセス許可を持たないユーザーによってスキーマ作成コマンドが実行され、データベース監査の仕様でSCHEMA_OBJECT_ACCESS_GROUPとSCHEMA_OBJECT_CHANGE_GROUPが有効になっている場合に、未解決のデッドロックが表示される問題も解決します。

SQL Server ビルドについて

SQL Server 2016 の各新しいビルドには、以前のビルドであったすべての修正プログラムとセキュリティ修正プログラムが含まれています。 SQL Server 用の最新の累積的な更新プログラムをインストールすることをお勧めします。

SQL Server 2017 の最新の累積的な更新プログラム

SQL Server 2016 の最新ビルド

状態

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

参考資料

Microsoft がソフトウェア更新プログラムについて説明するために使用する 用語について説明します 。