Просмотр размера разреженного файла моментального снимка базы данных (Transact-SQL)
Область применения:SQL Server
В этом разделе описывается, как использовать Transact-SQL для проверки того, что файл базы данных SQL Server является разреженным и чтобы узнать о его фактических и максимальных размерах. Разреженные файлы, являющиеся функцией файловой системы NTFS, используются в моментальных снимках баз данных SQL Server.
Примечание.
При создании моментального снимка базы данных разреженные файлы создаются, используя имена файлов, указанные в инструкции CREATE DATABASE. Эти имена файлов хранятся в таблице sys.master_files в столбце physical_name . В таблице sys.database_files (в базе данных-источнике или в моментальном снимке) столбец physical_name всегда содержит имена файлов базы данных-источника.
Убедитесь, что файл базы данных является разреженным файлом
На экземпляре 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.
Используйте команды Windows dir.
Выбор разреженного файла, открытие диалогового окна Свойства в 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)