Просмотр размера разреженного файла снимка базы данных (Transact-SQL)

Применимо к: даSQL Server (все поддерживаемые версии)

В этом разделе описывается использование Transact-SQL для проверки того, является ли файл базы данных SQL Server разреженным файлом, и для определения фактического и максимального размеров. Разреженные файлы, которые являются средством файловой системы NTFS, используются моментальными снимками базы данных SQL Server .

Примечание

При создании моментального снимка базы данных разреженные файлы создаются с помощью имен файлов, указанных в инструкции CREATE DATABASE. Эти имена файлов хранятся в таблице sys.master_files в столбце physical_name . В таблице sys.database_files (в базе данных-источнике или в моментальном снимке) столбец physical_name всегда содержит имена файлов базы данных-источника.

Убедитесь, что файл базы данных является разреженным файлом

  1. В экземпляре SQL Server.

    Выберите столбец is_sparse в таблице sys.database_files в моментальном снимке базы данных или в таблице sys.master_files. Значение указывает, является ли файл разреженным, следующим образом:

    1 = разреженный файл.

    0 = неразреженный файл.

Определение фактического размера разреженного файла

Примечание

Разреженные файлы каждый раз увеличиваются в размере на 64 килобайта (КБ); таким образом, размер разреженного файла на диске всегда кратен 64 КБ.

Для определения числа байтов, используемых в настоящее время на диске каждым разреженным файлом моментального снимка, необходимо запросить столбец size_on_disk_bytes динамического административного представления sys.dm_io_virtual_file_stats в SQL Server.

Чтобы увидеть место на диске, занимаемое разреженным файлом, можно щелкнуть правой кнопкой мыши файл в Microsoft Windows, выбрать пункт Свойства и просмотреть значение Место на диске .

Определение максимального размера разреженного файла

Максимальный размер, до которого может увеличиться разреженный файл, равен размеру соответствующего файла базы данных-источника на момент создания моментального снимка. Чтобы узнать этот размер, можно использовать один из следующих способов.

  • Использование командной строки Windows.

    1. Использование команд Windows dir .

    2. Выбор разреженного файла, открытие диалогового окна Свойства в Windows и просмотр значения Размер .

  • В экземпляре SQL Server.

    Выбрать столбец size из таблицы sys.database_files в моментальном снимке базы данных или из таблицы sys.master_files. Значение столбца size отражает максимальный объем пространства (в страницах SQL), который может когда-либо использоваться моментальным снимком; это значение эквивалентно значению поля Windows Size , за исключением того, что оно представлено в терминах количества страниц SQL в файле; размер в байтах равен:

    ( число_страниц * 8192)

Пример

Следующий скрипт отображается размер в килобайтах для каждого разреженного файла. Скрипт также указывает максимальный размер в мегабайтах, до которого может увеличиться разреженный файл. Выполните скрипт Transact-SQL в 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;

См. также:

Моментальные снимки базы данных (SQL Server)
sys.fn_virtualfilestats (Transact-SQL)
sys.database_files (Transact-SQL)
sys.master_files (Transact-SQL)