Stati dei file

Si applica a: sìSQL Server (tutte le versioni supportate) Sìdatabase SQL di Azure SìIstanza gestita di SQL di Azure sìAzure Synapse Analytics sìParallel Data Warehouse

In SQL Serverlo stato di un file di database viene gestito in modo indipendente dallo stato del database. Lo stato di un file è sempre specifico, ad esempio ONLINE o OFFLINE. Per visualizzare lo stato corrente di un file, usare la vista del catalogo sys.master_files o sys.database_files . Se il database è offline, lo stato dei file è indicato nella vista del catalogo sys.master_files .

Lo stato dei file di un filegroup determina la disponibilità dell'intero filegroup. Un filegroup è disponibile se tutti i file in esso inclusi sono online. Per visualizzare lo stato corrente di un filegroup, usare la vista del catalogo sys.filegroups . Se un filegroup è offline e si tenta di accedervi tramite un'istruzione Transact-SQL , l'operazione avrà esito negativo e verrà restituito un errore. Quando Query Optimizer compila i piani di query per le istruzioni SELECT, evita gli indici non cluster e le viste cluster incluse nei filegroup offline, lasciando che queste istruzioni vengano eseguite. Se tuttavia il filegroup offline contiene l'indice cluster o heap della tabella di destinazione, l'istruzione SELECT avrà esito negativo, così come tutte le istruzioni INSERT, UPDATE o DELETE che implicano la modifica di una tabella tramite un indice incluso in un filegroup offline.

Definizioni degli stati del file

Nella tabella seguente sono riportate le definizioni degli stati del file.

State Definizione
ONLINE Il file è disponibile per tutte le operazioni. I file del filegroup primario sono sempre online se il database stesso è online. Se un file del filegroup primario non è online, il database non sarà online e gli stati dei file secondari risulteranno indefiniti.
OFFLINE Il file non è accessibile e potrebbe non essere presente sul disco. I file vengono portati offline a seguito di un'azione esplicita da parte dell'utente e rimangono tali finché l'utente non interviene.

** Attenzione ** Lo stato di un file può essere impostato su offline se è danneggiato, ma può essere ripristinato. Per riportare online un file impostato su offline, è necessario ripristinare il file dal backup. Per altre informazioni sul ripristino di un singolo file, vedere RESTORE (Transact-SQL).

Un file di database viene impostato su OFFLINE quando un database è in recupero con registrazione completa o con registrazione minima delle operazioni bulk e un file viene eliminato. La voce in sys.master_files persiste fino a quando un log delle transazioni viene troncato oltre il valore drop_lsn. Per altre informazioni, vedere Log delle transazioni (SQL Server).
RESTORING Il file è in fase di ripristino. Questo stato indica che è stato eseguito un comando di ripristino che interessa l'intero file e non solo una pagina e rimarrà attivo fino al completamento dell'operazione di ripristino e di recupero del file.
RECOVERY PENDING Il recupero del file è stato posticipato. Questo stato viene attivato automaticamente durante un processo di ripristino a fasi in cui il file non viene ripristinato e recuperato. Per risolvere l'errore e consentire il completamento del processo di recupero, è necessario un ulteriore intervento da parte dell'utente. Per altre informazioni, vedere Ripristini a fasi (SQL Server).
SUSPECT Non è stato possibile recuperare il file durante un processo di ripristino online. Se il file è incluso nel filegroup primario, anche il database viene contrassegnato come suspect, ovvero sospetto. In caso contrario, solo il file sarà sospetto mentre il database risulterà ancora online.

Lo stato suspect rimarrà attivo finché il file non viene reso disponibile mediante uno dei metodi seguenti:

Ripristino e recupero

DBCC CHECKDB con REPAIR_ALLOW_DATA_LOSS
DEFUNCT Il file è stato eliminato quando non era online. Lo stato di tutti i file di un filegroup è defunct quando si rimuove un filegroup offline.

ALTER DATABASE (Transact-SQL)

Stati del database

Stati di mirroring (SQL Server)

DBCC CHECKDB (Transact-SQL)

Filegroup e file di database