Condividi tramite


Visualizzare le dimensioni del file sparse di un'istantanea del database (Transact-SQL)

Si applica a:SQL Server

Questo argomento illustra come usare Transact-SQL per verificare che un file di database di SQL Server sia un file sparse e per conoscere le dimensioni effettive e massime. I file sparse, che sono una funzionalità del file system NTFS, vengono utilizzati dagli snapshot di database di SQL Server.

Nota

Durante la creazione dello snapshot di database, i file sparse vengono generati utilizzando i nomi di file specificati nell'istruzione CREATE DATABASE. Questi nomi di file sono archiviati in sys.master_files nella colonna physical_name . In sys.database_files , sia nel database di origine sia nello snapshot, nella colonna physical_name sono sempre inclusi i nomi dei file del database di origine.

Verificare che un file di database sia un file sparse

  1. Sull'istanza di SQL Server:

    Selezionare la colonna is_sparse da sys.database_files nello snapshot di database oppure da sys.master_files. Tramite il valore viene indicato se il file è di tipo sparse, come segue:

    1 = il file è un file sparse.

    0 = Il file non è un file sparse.

Conoscere le dimensioni effettive di un file sparse

Nota

Le dimensioni dei file sparse aumentano con incrementi di 64 kilobyte (KB) e corrispondono quindi sempre a un multiplo di 64 KB.

Per visualizzare il numero di byte attualmente utilizzati sul disco da ogni file sparse di uno snapshot, eseguire una query nella colonna size_on_disk_bytes della vista di gestione dinamica sys.dm_io_virtual_file_stats di SQL Server.

Per visualizzare lo spazio su disco usato da un file sparse, fare clic con il pulsante destro del mouse sul file in Microsoft Windows, scegliere Proprietàe quindi verificare il valore in Dimensioni su disco .

Per determinare la dimensione massima di un file sparso

La dimensione massima consentita per un file sparse equivale alla dimensione del file di database di origine corrispondente al momento della creazione dello snapshot. Per conoscere questa dimensione, è possibile utilizzare una delle seguenti alternative:

  • Per utilizzare il prompt dei comandi di Windows:

    1. Usare i comandi dir di Windows.

    2. Selezionare il file sparse, aprire la finestra di dialogo Proprietà relativa a tale file in Windows e verificare il valore Dimensioni .

  • Sull'istanza di SQL Server:

    Selezionare la colonna size in sys.database_files nel snapshot del database oppure in sys.master_files. Il valore della colonna size indica lo spazio massimo, espresso in pagine SQL, consentito per lo snapshot. Questo valore equivale al campo Dimensioni di Windows, ma viene rappresentato in termini di numero di pagine SQL nel file. La dimensione in byte è:

    ( numero_di_pagine * 8192)

Esempio

Lo script seguente mostra le dimensioni su disco in KB per ogni file sparse. Lo script visualizza anche le dimensioni massime in megabyte che un file sparse può raggiungere. Esegui lo script Transact-SQL in SQL Server Management Studio.

SELECT  DB_NAME(sd.source_database_id) AS [SourceDatabase], 
		sd.name AS [Snapshot],
		mf.name AS [Filename], 
		size_on_disk_bytes/1024 AS [size_on_disk (KB)],
		mf2.size/128 AS [MaximumSize (MB)]
FROM sys.master_files mf
JOIN sys.databases sd
	ON mf.database_id = sd.database_id
JOIN sys.master_files mf2
	ON sd.source_database_id = mf2.database_id
	AND mf.file_id = mf2.file_id
CROSS APPLY sys.dm_io_virtual_file_stats(sd.database_id, mf.file_id)
WHERE mf.is_sparse = 1
AND mf2.is_sparse = 0
ORDER BY 1;

Vedi anche

Snapshot del database (SQL Server)
sys.fn_virtualfilestats (Transact-SQL)
sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)