Вот запрос, который Management Studio использует для заполнения этих чисел:
SELECT
(SELECT SUM(CAST(df.size as float)) FROM sys.database_files AS df
WHERE df.type in ( 0, 2, 4 ) ) AS [DbSize],
SUM(a.total_pages) AS [SpaceUsed],
(SELECT SUM(CAST(df.size as float)) FROM sys.database_files AS df
WHERE df.type in (1, 3)) AS [LogSize]
FROM
sys.partitions p join sys.allocation_units a
on p.partition_id = a.container_id
left join sys.internal_tables it
on p.object_id = it.object_id
Вам нужно выполнить математику здесь, как это делает Management Studio, чтобы получить те же цифры. Кроме того, левое соединение sys.internal_tables
в лучшем случае кажется излишним. Настроив этот запрос, чтобы он соответствовал вашему идеальному результату
SELECT
(SELECT CONVERT(DECIMAL(18,2), SUM(CAST(df.size as float))*8/1024.0)
FROM sys.database_files AS df
WHERE df.type in ( 0, 2, 4 ) ) AS [DbSize],
CONVERT(DECIMAL(18,2), SUM(a.total_pages)*8/1024.0) AS [SpaceUsed],
(SELECT CONVERT(DECIMAL(18,2), SUM(CAST(df.size as float))*8/1024.0)
FROM sys.database_files AS df
WHERE df.type in (1, 3)) AS [LogSize]
FROM sys.partitions p join sys.allocation_units a
on p.partition_id = a.container_id;
С этим обновлением, если ваша база данных не изменится за это время, она должна дать:
753475.94 744030.07 2900.00
Делаем простую математику и выделяем только три числа, которые вы хотите:
;WITH t(s) AS
(
SELECT CONVERT(DECIMAL(18,2), SUM(size)*8/1024.0)
FROM sys.database_files
WHERE [type] % 2 = 0
),
d(s) AS
(
SELECT CONVERT(DECIMAL(18,2), SUM(total_pages)*8/1024.0)
FROM sys.partitions AS p
INNER JOIN sys.allocation_units AS a
ON p.[partition_id] = a.container_id
)
SELECT
Allocated_Space = t.s,
Available_Space = t.s - d.s,
[Available_%] = CONVERT(DECIMAL(5,2), (t.s - d.s)*100.0/t.s)
FROM t CROSS APPLY d;
Что-то я собрал. Вам нужно POWERSHELL на вашем SQL Server, чтобы запустить это. Не уверен в версии. Это займет ваши размеры дисков и сообщит о размерах файлов и свободного места, а также свободного места на диске.
Он не на 100% оригинален, и его части я нашел в Интернете и собрал все вместе. Это была PITA, чтобы она вписывалась в правильные поля, поэтому вам, возможно, придется поиграть с круглыми скобками.
источник
Нижеприведенный скрипт может быть использован для получения следующей информации: 1. Информация о размере БД 2. FileSpaceInfo 3. AutoGrowth 4. Модель восстановления 5. Информация Log_reuse_backup
источник