Condividi tramite


Stati dei file

In SQL Server lo 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, utilizzare la vista del catalogo sys.master_files o sys.database_files. Se il database non è in linea, 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 in linea. Per visualizzare lo stato corrente di un filegroup, utilizzare la vista del catalogo sys.filegroups. Se un filegroup non è in linea e si tenta di accedervi tramite un'istruzione Transact-SQL, l'operazione avrà esito negativo e verrà restituito un errore. Quando Query Optimizer crea i piani di query per le istruzioni SELECT, evita gli indici non cluster e le viste cluster incluse nei filegroup non in linea, lasciando che queste istruzioni vengano eseguite. Se tuttavia il filegroup non in linea 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 non in linea.

Definizioni degli stati del file

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

Stato

Definizione

ONLINE

Il file è disponibile per tutte le operazioni. I file del filegroup primario sono sempre in linea se il database stesso è in linea. Se un file del filegroup primario non è in linea, il database non sarà in linea e gli stati dei file secondari risulteranno indefiniti.

OFFLINE

Il file non è accessibile e potrebbe non essere presente sul disco. I file vengono portati non in linea a seguito di un'azione esplicita da parte dell'utente e rimangono tali finché l'utente non interviene.

Nota di attenzioneAttenzione
Impostare il file su offline se è danneggiato ma può essere ripristinato. Per riportare in linea un file impostato su offline, è necessario ripristinare il file dal backup. Per ulteriori informazioni sul ripristino di un singolo file, vedere RESTORE (Transact-SQL).

RESTORING

È in corso il ripristino del file. 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 ulteriori informazioni, vedere Esecuzione di ripristini a fasi.

SUSPECT

Non è stato possibile recuperare il file durante un processo di ripristino in linea. 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 in linea.

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 in linea. Lo stato di tutti i file di un filegroup è defunct quando si rimuove un filegroup non in linea.