現象
次のような状況で問題が発生します。
-
Microsoft SQL Server 2014 で AlwaysOn 可用性グループ機能を有効にします。
-
AlwaysOn データベースには、共通言語ランタイム (CLR) のユーザー定義データ型 (UDT) が含まれています。 さらに、同じ CLR UDT が複数のデータベースに存在します。
-
CLR UDT を持つ複数のデータベースを含むクエリを実行します。
このシナリオでは、セカンダリレプリカでアクセス違反エラーが発生し、sql Server のインスタンスが SQL Server エラーログで次のメッセージでクラッシュします。
2015-02-17 13:07: 36.85 spid27s VLR の処理中に例外2905が発生したためにデータベースをシャットダウンします。2015年: 36.85 spid27s エラー: 3449、Severity:21、状態: 1.2015-02-17 13:07: 36.85 spid27s SQL Server は、データベース (データベース ID 2) を復元するためにシャットダウンする必要があります。 データベースは、シャットダウンできないかシステムデータベースであるユーザーデータベースです。 SQL Server を再起動します。 別の起動後にデータベースの回復に失敗した場合は、データベースを修復または復元します。
さらに、セカンダリレプリカデータベースで次のエラーメッセージが表示され、SQL Server を再起動するまでエラーが表示されなくなります。
メッセージ3961、レベル16、状態1、行3スナップショット分離トランザクションが、このトランザクションの開始後の別の同時トランザクションの DDL ステートメントによって変更されたため、データベース ' <DatabaseName> ' で失敗しました。 メタデータがバージョン管理されていないため、許可されません。 メタデータへの同時更新は、スナップショット分離と混在している場合は不整合につながる可能性があります。
解決方法
累積的な更新情報
この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムをダウンロードしてインストールすることをお勧めします。
更新プログラムの情報この問題を解決するには、更新プログラム KB 3043788 を適用し ます。 SQL Server 2014 では、オンデマンドの修正プログラムパッケージを使用できます。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。