現象
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 の最新の累積的な更新プログラム
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
参考資料
Microsoft がソフトウェア更新プログラムについて説明するために使用する 用語について説明します 。