ファイルの状態

適用対象:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

SQL Server では、データベース ファイルの状態はデータベースの状態とは別に管理されます。 ファイルは常に、ONLINE または OFFLINE などの特定の状態にあります。 ファイルの現在の状態を表示するには、 sys.master_files カタログ ビューまたは sys.database_files カタログ ビューを使用します。 データベースがオフラインになっている場合、 sys.master_files カタログ ビューからファイルの状態を表示できます。

ファイル グループ内のファイルの状態により、ファイル グループ全体の可用性が決まります。 ファイル グループを使用可能にするには、ファイル グループ内のすべてのファイルがオンラインである必要があります。 ファイル グループの現在の状態を表示するには、 sys.filegroups カタログ ビューを使用します。 ファイル グループがオフラインのときに、Transact-SQL ステートメントを使用してファイル グループにアクセスしようとすると、エラーが発生して失敗します。 クエリ オプティマイザーで SELECT ステートメントのクエリ プランを作成すると、オフライン ファイル グループに存在する非クラスター化インデックスおよびインデックス付きビューが無視され、これらのステートメントが成功します。 ただし、オフラインのファイル グループに、対象テーブルのヒープやクラスター化インデックスが含まれている場合には、SELECT ステートメントは失敗します。 また、オフラインのファイル グループ内にあるインデックス付きのテーブルを変更する INSERT、UPDATE、または DELETE ステートメントは失敗します。

ファイルの状態の定義

次の表では、ファイルの状態を定義しています。

State 定義
ONLINE すべての操作でファイルを使用できます。 データベース自体がオンラインである場合、プライマリ ファイル グループ内のファイルは常にオンラインです。 プライマリ ファイル グループ内のファイルがオンラインでない場合、データベースはオンラインにならないので、セカンダリ ファイルの状態は未定義となります。
OFFLINE ファイルにアクセスできません。また、ファイルがディスク上に存在しない可能性があります。 ファイルは、ユーザーの明示的な操作によってオフラインになり、ユーザーが追加操作を行うまではオフラインのままになります。

** 注意 ** ファイルが破損しているとき、ファイルの状態がオフラインに設定されることがありますが、オンラインに戻すことができます。 オフラインに設定されたファイルをオンラインに設定する唯一の方法は、バックアップからファイルを復元することです。 単一ファイルの復元の詳細については、「RESTORE (Transact-SQL)」を参照してください。

データベースが完全または一括のログ復旧状態のとき、ファイルが削除されると、データベース ファイルもオフラインに設定されます。 sys.master_files のエントリは、drop_lsn 値を超えたためにトランザクション ログが切り詰められるまで残ります。 詳細については、「トランザクション ログの切り捨て」を参照してください.
RESTORING ファイルは復元中です。 復元コマンドはページの復元だけでなくファイル全体に影響するため、ファイルが復元状態になります。復元が完了してファイルが復旧されるまではこの状態のままになります。
RECOVERY PENDING ファイルの復旧が延期されました。 ファイルが復元および復旧されず、復元処理が断片的な状態になると、ファイルは自動的にこの状態になります。 エラーを解決して復旧処理を完了できるようにするには、ユーザーによる追加操作が必要です。 詳細については、段階的な部分復元 (SQL Server) に関するページを参照してください。
SUSPECT オンラインの復元処理中にファイルの復旧に失敗しました。 ファイルがプライマリ ファイル グループにある場合、データベースも問題ありとしてマークされます。 それ以外の場合、ファイルのみが問題ありの状態になり、データベースはオンラインのままになります。

次の方法のいずれかによってファイルが使用可能になるまで、ファイルは問題ありの状態のままになります。

復元および復旧

REPAIR_ALLOW_DATA_LOSS を指定した DBCC CHECKDB
DEFUNCT ファイルがオンラインでないときに削除されました。 オフラインのファイル グループが削除されると、ファイル グループ内のすべてのファイルが機能しなくなります。

ALTER DATABASE (Transact-SQL)

データベースの状態

ミラーリング状態 (SQL Server)

DBCC CHECKDB (Transact-SQL)

データベース ファイルとファイル グループ