Состояния файлов

Применимо к:SQL ServerAzure SQL DatabaseAzure Managed InstanceAzure Synapse Analytics AnalyticsPlatform 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).

Файл базы данных также устанавливается в режим OFFLINE, если для базы данных используется модель полного восстановления или восстановления с неполным протоколированием и файл отбрасывается. Запись в sys.master_files сохраняется до усечения журнала транзакций после значения drop_lsn. Дополнительные сведения: Усечение журнала транзакций.
RESTORING Файл восстанавливается. Файлы переходят в состояние восстановления в результате команды восстановления, воздействующей на весь файл, а не на отдельную страницу; файлы остаются в состоянии восстановления до окончания процесса восстановления файла.
RECOVERY PENDING Восстановление файла было отложено. Файл переходит в это состояние автоматически в результате частичного восстановления, при котором файл еще не восстановлен. Со стороны пользователя требуется дополнительное действие, чтобы исправить ошибку и разрешить завершение процесса восстановления. Дополнительные сведения см. в разделе Поэтапное восстановление (SQL Server).
SUSPECT Не удалось восстановить файл в процессе восстановления файла в сети. Если файл находится в первичной файловой группе, база данных тоже помечается как подозрительная. Иначе база данных остается в режиме в сети, и в подозрительном состоянии находится только файл.

Файл остается в подозрительном состоянии до тех пор, пока он не становится доступным в результате одного из следующих методов.

Восстановление из резервной копии или по журналу транзакций

Инструкцией DBCC CHECKDB c параметром REPAIR_ALLOW_DATA_LOSS
DEFUNCT Файл был удален, пока находился не в сети. При удалении файловой группы вне сети все файлы группы помечаются удаленными.

ALTER DATABASE (Transact-SQL)

Состояния базы данных

Состояния зеркального отображения (SQL Server)

DBCC CHECKDB (Transact-SQL)

Файлы и файловые группы базы данных