Stati dei file

Si applica a: SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

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, 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 l'ottimizzatore di query genera i piani di esecuzione per le istruzioni SELECT, evita gli indici non clusterizzati e le viste indicizzate che risiedono in filegroup offline, consentendo la corretta esecuzione di tali istruzioni. Tuttavia, se il filegroup offline contiene l'heap o l'indice clusterizzato della tabella di destinazione, le istruzioni SELECT non riescono. Inoltre, qualsiasi istruzione INSERT, UPDATE o DELETE che modifica una tabella con un indice in un filegroup offline avrà esito negativo.

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 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 inoltre impostato su OFFLINE quando un database usa il modello di recupero con registrazione completa o con registrazione minima e un file viene rimosso. La voce in sys.master_files rimane presente finché il log delle transazioni non viene troncato oltre il valore di drop_lsn. Per altre informazioni, vedere Troncamento del log delle transazioni.
Ripristino 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.
RECUPERO IN ATTESA Il recupero del file è stato posticipato. Un file entra automaticamente in questo stato a causa di un processo di ripristino parziale nel quale il file non viene ripristinato né 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 parziali (SQL Server).
SOSPETTO 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
OBSOLETO Il file è stato eliminato quando non era online. Tutti i file di un filegroup diventano inutilizzabili quando un filegroup offline viene rimosso.

ALTER DATABASE (Transact-SQL)

Stati del database

Stati del mirroring (SQL Server)

DBCC CHECKDB (Transact-SQL)

File di database e filegroup