Ver el tamaño del archivo disperso de una instantánea de base de datos (Transact-SQL)View the Size of the Sparse File of a Database Snapshot (Transact-SQL)

SE APLICA A: síSQL Server noAzure SQL Database noAzure SQL Data Warehouse noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server noAzure SQL Database noAzure SQL Data Warehouse noParallel Data Warehouse

En este tema se describe cómo usar Transact-SQLTransact-SQL para comprobar que un archivo de base de datos de SQL ServerSQL Server es un archivo disperso y para determinar su tamaño real y máximo.This topic describes how to use Transact-SQLTransact-SQL to verify that a SQL ServerSQL Server database file is a sparse file and to find out its actual and maximum sizes. Las instantáneas de base de datos de SQL ServerSQL Server usan archivos dispersos, que son una característica del sistema de archivos NTFS.Sparse files, which are a feature of the NTFS file system, are used by SQL ServerSQL Server database snapshots.

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.During database snapshot creation, sparse files are created by using the file names in the CREATE DATABASE statement. Estos nombres de archivo se almacenan en la columna physical_name de sys.master_files .These file names are stored in sys.master_files in the physical_name column. 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.In sys.database_files (whether in the source database or in a snapshot), the physical_name column always contains the names of the source database files.

Comprobar que un archivo de base de datos es un archivo dispersoVerify that a Database File is a Sparse File

  1. En la instancia de SQL ServerSQL Server:On the instance of SQL ServerSQL Server:

    Seleccione la columna is_sparse de sys.database_files en la instantánea de base de datos o de sys.master_files.Select the is_sparse column from either sys.database_files in the database snapshot or from sys.master_files. El valor indica si el archivo es un archivo disperso, de la manera siguiente:The value indicates whether the file is a sparse file, as follows:

    1 = El archivo es un archivo disperso.1 = File is a sparse file.

    0 = El archivo no es un archivo disperso.0 = File is not a sparse file.

Calcular el tamaño real de un archivo dispersoFind Out the Actual Size of a Sparse File

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.Sparse files grow in 64-kilobyte (KB) increments; thus, the size of a sparse file on disk is always a multiple of 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 ServerSQL Server.To view the number of bytes that each sparse file of a snapshot is currently using on disk, query the size_on_disk_bytes column of the SQL ServerSQL Server sys.dm_io_virtual_file_stats dynamic management view.

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 .To view the disk space used by a sparse file, right-click the file in Microsoft Windows, click Properties, and look at the Size on disk value.

Calcular el tamaño máximo de un archivo dispersoFind Out the Maximum Size of a Sparse File

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.The maximum size to which a sparse can grow is the size of the corresponding source database file at the time of the snapshot creation. Para saber cuál es este tamaño, puede usar cualquiera de las alternativas siguientes:To learn this size, you can use one of the following alternatives:

  • Con el símbolo del sistema de Windows:Using Windows Command Prompt:

    1. Utilice los comandos dir de Windows.Use Windows dir commands.

    2. Seleccione el archivo disperso, abra el cuadro de diálogo Propiedades del archivo en Windows y consulte el valor de Tamaño .Select the sparse file, open the file Properties dialog box in Windows, and look at the Size value.

  • En la instancia de SQL ServerSQL Server:On the instance of SQL ServerSQL Server:

    Seleccione la columna size de sys.database_files en la instantánea de base de datos o de sys.master_files.Select the size column from either sys.database_files in the database snapshot or from 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:The value of size column reflects the maximum space, in SQL pages, that the snapshot can ever use; this value is equivalent to the Windows Size field, except that it is represented in terms of the number of SQL pages in the file; the size in bytes is:

    ( número_de_páginas * 8192)( number_of_pages * 8192)

EjemploExample

El script siguiente mostrará el tamaño del disco en kilobytes de cada archivo disperso.The following script will show the size on disk in kilobytes for each sparse file. El script también mostrará el tamaño máximo en megabytes que puede llegar a tener un archivo disperso.The script will also show the maximum size in megabytes to which a sparse file can grow. Ejecute el script Transact-SQL en SQL Server Management StudioSQL Server Management Studio.Execute the Transact-SQL script in SQL Server Management StudioSQL 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;

Ver tambiénSee Also

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