Existe-t-il un moyen de suivre la croissance de la taille de ma base de données dans le temps pour SQL Server 2008 ? Est-ce que je peux voir cela à partir d'un tableau de bord quelque part ou dois-je script une requête pour effectuer cela ?
Gracias
Existe-t-il un moyen de suivre la croissance de la taille de ma base de données dans le temps pour SQL Server 2008 ? Est-ce que je peux voir cela à partir d'un tableau de bord quelque part ou dois-je script une requête pour effectuer cela ?
Gracias
Je pense que la meilleure façon de suivre la croissance de la taille d'une base de données est de collecter chaque semaine ou aussi souvent que vous le souhaitez leurs tailles et de les insérer dans une table statique d'une autre instance SQL, différente de celle de la base de données surveillée.
Vous pouvez utiliser la requête ci-dessous qui renvoie les tailles des fichiers de données et de journaux en mégaoctets et insère les données dans une autre table tempdb. Au bout d'un mois ou d'un an, vous pourrez vérifier la croissance en analysant la sortie de cette table et même créer un graphique.
CREATE TABLE tempdb..DB_size_growth
(dbname NVARCHAR(256),
mb_data_file NUMERIC(12,2),
data_file_nr INT ,
mb_log_file NUMERIC(12,2),
log_file_nr INT)
DECLARE @dbname AS NVARCHAR(3000)
DECLARE @exec AS NVARCHAR(3999)
DECLARE DB_NAME CURSOR FOR
SELECT name FROM master.dbo.sysdatabases where has_dbaccess(name) = 1
OPEN DB_NAME
FETCH NEXT FROM DB_NAME INTO @dbname
TRUNCATE TABLE tempdb..DB_size_growth
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @exec = 'INSERT INTO tempdb..DB_size_growth (dbname, mb_data_file, data_file_nr, mb_log_file, log_file_nr)
SELECT b.name AS dbname
,(SELECT convert(numeric(12,3),convert(numeric(12,2),((sum(a1.size))*8))/1024)
from ' + QUOTENAME(@dbname, '[') + '.dbo.sysfiles as a1 where a1.groupid <> 0 ) as mb_data_file
,(SELECT count(a1.size) from ' + QUOTENAME(@dbname, '[') + '.dbo.sysfiles as a1 where a1.groupid <> 0 ) as data_file_nr
,(SELECT convert(numeric(12,3),convert(numeric(12,2),((sum(a.size))*8))/1024)
from ' + QUOTENAME(@dbname, '[') + '.dbo.sysfiles as a where a.groupid = 0 ) as mb_log_file
,(SELECT count(a.size) from ' + QUOTENAME(@dbname, '[') + '.dbo.sysfiles as a where a.groupid = 0 ) as log_file_nr
FROM master.dbo.sysdatabases as b WHERE name = '''+ @dbname +'''
group by b.name'
EXEC (@exec)
FETCH NEXT FROM DB_NAME INTO @dbname
END
CLOSE DB_NAME
DEALLOCATE DB_NAME
select * from tempdb..DB_size_growth
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.