Voici la requête utilisée par Management Studio pour remplir ces nombres:
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
Vous devez effectuer des calculs ici, tout comme Management Studio pour obtenir les mêmes nombres. De plus, la jointure gauche sys.internal_tables
semble au mieux superflue. Donc, ajustez cette requête pour qu'elle corresponde à votre sortie idéale:
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;
Avec cette mise à jour, en supposant que votre base de données ne change pas entre-temps, elle devrait donner:
753475.94 744030.07 2900.00
Faire des calculs simples et isoler uniquement les trois nombres souhaités:
;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;
Quelque chose que j'ai mis en place. Vous avez besoin de PowerShell sur votre serveur SQL pour exécuter cela. Pas sûr de la version. Cela prendra la taille de votre lecteur et vous indiquera la taille des fichiers et l'espace libre ainsi que l'espace libre sur le lecteur.
Ce n'est pas 100% original et j'en ai trouvé des parties ailleurs sur Internet et j'ai mis le tout ensemble. C'était un PITA pour le faire rentrer dans les bonnes marges donc vous pourriez avoir à jouer avec les parenthèses
la source
Le script ci-dessous peut être utilisé pour obtenir les informations suivantes: 1. Informations sur la taille de la base de données 2. FileSpaceInfo 3. Croissance automatique 4. Modèle de récupération 5. Informations sur Log_reuse_backup
la source