Ver el tamaño del archivo disperso de una instantánea de base de datos (Transact-SQL)

Se aplica a: SQL Server

En este tema se describe cómo usar Transact-SQL para comprobar que un archivo de base de datos de SQL Server es un archivo disperso y para determinar su tamaño real y máximo. Las instantáneas de base de datos de SQL Server usan archivos dispersos, que son una característica del sistema de archivos NTFS.

Nota:

Durante la creación de instantáneas de base de datos, se crean archivos dispersos con los nombres de archivo de la instrucción CREATE DATABASE. Estos nombres de archivo se almacenan en la columna physical_name de sys.master_files . En sys.database_files , ya sea en la base de datos de origen o en una instantánea, la columna physical_name siempre incluye los nombres de los archivos de la base de datos de origen.

Comprobar que un archivo de base de datos es un archivo disperso

  1. En la instancia de SQL Server:

    Seleccione la columna is_sparse de sys.database_files en la instantánea de base de datos o de sys.master_files. El valor indica si el archivo es un archivo disperso, de la manera siguiente:

    1 = El archivo es un archivo disperso.

    0 = El archivo no es un archivo disperso.

Calcular el tamaño real de un archivo disperso

Nota:

El tamaño de los archivos dispersos aumenta en incrementos de 64 kilobytes (KB), por lo que siempre es un múltiplo de 64 KB.

Para ver el número de bytes que cada archivo disperso de una instantánea está usando actualmente en el disco, consulte la columna size_on_disk_bytes de la vista de administración dinámica sys.dm_io_virtual_file_stats de SQL Server.

Para ver el espacio en disco que usa un archivo disperso, haga clic con el botón derecho en el archivo en Microsoft Windows, haga clic en Propiedadesy consulte el valor de Tamaño en disco .

Calcular el tamaño máximo de un archivo disperso

El tamaño máximo de un archivo disperso es el tamaño del archivo de la base de datos de origen correspondiente en el momento de la creación de la instantánea. Para saber cuál es este tamaño, puede usar cualquiera de las alternativas siguientes:

  • Con el símbolo del sistema de Windows:

    1. Utilice los comandos dir de Windows.

    2. Seleccione el archivo disperso, abra el cuadro de diálogo Propiedades del archivo en Windows y consulte el valor de Tamaño .

  • En la instancia de SQL Server:

    Seleccione la columna size de sys.database_files en la instantánea de base de datos o de sys.master_files. El valor de la columna size refleja el espacio máximo, en páginas SQL, que puede usar la instantánea. Este valor es equivalente al del campo Tamaño de Windows, con la diferencia de que se representa en términos de número de páginas SQL del archivo. El tamaño en bytes es el siguiente:

    ( número_de_páginas * 8192)

Ejemplo

El script siguiente mostrará el tamaño del disco en kilobytes de cada archivo disperso. El script también mostrará el tamaño máximo en megabytes que puede llegar a tener un archivo disperso. Ejecute el script Transact-SQL en 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;

Consulte también

Instantáneas de base de datos (SQL Server)
sys.fn_virtualfilestats (Transact-SQL)
sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)