Просмотр размера разреженного файла моментального снимка базы данных (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 динамического административного представления SQL Server sys.dm_io_virtual_file_stats .

Чтобы увидеть место на диске, занимаемое разреженным файлом, можно щелкнуть правой кнопкой мыши файл в 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)