文件状态

在 SQL Server 中,数据库文件的状态独立于数据库的状态进行维护。 文件始终处于一个特定状态,例如 ONLINE 或 OFFLINE。 若要查看文件的当前状态,请使用 sys.master_filessys.database_files 目录视图。 如果数据库处于脱机状态,可以从 sys.master_files 目录视图中查看文件的状态。

文件组中文件的状态决定了整个文件组的可用性。 文件组中的所有文件都必须联机,文件组才可用。 若要查看文件组的当前状态,请使用 sys.filegroups 目录视图。 如果文件组处于脱机状态,并且你尝试通过 Transact-SQL 语句访问文件组,它将失败并出现错误。 当查询优化器为 SELECT 语句生成查询计划时,它可避免驻留在脱机文件组中的非聚集索引和索引视图,从而使这些语句成功。 但是,如果脱机文件组包含目标表的堆或聚集索引,SELECT 语句将失败。 此外,修改脱机文件组中任何索引的表的任何 INSERT、UPDATE 或 DELETE 语句都将失败。

文件状态定义

下表定义了文件状态。

国家 定义
在线 该文件可用于所有操作。 如果数据库本身处于联机状态,则主文件组中的文件始终处于联机状态。 如果主文件组中的文件未联机,则数据库不联机,并且未定义辅助文件的状态。
离线 该文件不可用于访问,并且可能不存在于磁盘上。 文件通过用户的明确操作转为脱机,并保持脱机状态,直到用户进行其他操作。

**谨慎** 只有在文件损坏但可以修复的情况下,文件才应设置为脱机。 一个设置为脱机的文件只能通过从备份还原来重新设置为在线。 有关还原单个文件的详细信息,请参阅 RESTORE (Transact-SQL)
修复 正在还原该文件。 文件进入还原状态是因为还原命令影响了整个文件,而不仅是页面还原,并且它们会保持在此状态,直到还原完成并且文件恢复为止。
恢复待定 文件的恢复已推迟。 由于零星还原过程中文件未被还原和恢复,文件会自动进入此状态。 用户需要执行其他作才能解决错误并允许恢复过程完成。 有关详细信息,请参阅“段落还原”(SQL Server)。
嫌疑人 在联机还原过程中,文件恢复失败。 如果文件位于主文件组中,则数据库也会标记为可疑。 否则,只有文件是可疑的,数据库仍然处于联机状态。

文件将保持可疑状态,直到通过以下方法之一使其可用:

还原和恢复

使用 REPAIR_ALLOW_DATA_LOSS 的 DBCC CHECKDB
倒闭 文件在未联机时被删除。 删除脱机文件组时,文件组中的所有文件都将失效。

ALTER DATABASE (Transact-SQL)

数据库状态

镜像状态 (SQL Server)

DBCC CHECKDB (Transact-SQL)

数据库文件和文件组