現象
次のような状況で問題が発生します。
-
複数のファイルグループを持つ Microsoft SQL Server 2012 または以前のバージョンのデータベースを使用していますが、セカンダリファイルグループは既定のファイルグループです。
-
データベースをバックアップし、SQL Server 2014 に復元します。
-
プライマリファイルグループを既定のファイルグループとして設定してから、セカンダリファイルグループを削除します。
このシナリオでは、その下にあるすべてのデータファイルが削除されても、セカンダリファイルグループを削除することはできません。 このエラーメッセージは、セカンダリファイルグループが空ではないために削除できないことを示しています。
原因
この問題は、SQL Server 2014 のプライマリファイルグループではなく、データベースバージョンのアップグレードによって既定のファイルグループにシステムオブジェクトが作成されるために発生します。 セカンダリファイルグループには、まだいくつかのシステムオブジェクトが含まれています。
解決方法
この修正プログラムでは、システムテーブルをプライマリファイルグループに移動するためのトレースフラグ3861が導入されています。この記事で説明されている修正プログラムを適用した後、トレースフラグ3861をスタートアップパラメーターとして使用して SQL Server を起動すると、システムテーブルをプライマリファイルグループに移動できるようになります。データベースのバックアップをまだ復元していない場合は、サーバーレベルでトレースフラグを有効にすることができます。
dbcc traceon(3861,-1)<Restore the database>dbcc traceoff(3861,-1)
この問題は、SQL Server の次の累積的な更新プログラムで最初に修正されました。
SQL Server 2014 の累積更新プログラム4 /en-us/help/2999197
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。