1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
--======================================
-- Auteur : Etienne ZINZINDOHOUE
--======================================
USE tempdb
GO
IF OBJECT_ID('#T_AUDIT_TABLES', 'U') IS NOT NULL
DROP TABLE #T_AUDIT_TABLES
GO
CREATE TABLE #T_AUDIT_TABLES
(
[NomTable] nvarchar(255),
[NbLignes] char(11) NULL,
[EspacePrevu] varchar(18) NULL,
[TailleData] varchar(18) NULL,
[TailleIndex] varchar(18) NULL,
[EspaceInutilise] varchar(18)
) ON [PRIMARY]
GO
USE Northwind -- Mets ici ta base
DECLARE @TabEnCoursTraitement NVARCHAR(255),@SQL NVARCHAR(255), @DEL NVARCHAR (255)
CREATE TABLE #LIST_TABLES (nom_table varchar (255))
INSERT INTO #LIST_TABLES
SELECT TABLE_SCHEMA+'.'+TABLE_NAME AS [NomTable]
FROM information_schema.tables
WHERE table_type='BASE TABLE'
ORDER BY [NomTable]
-- Tant qu'il y a des lignes dans la table temporaire
WHILE EXISTS ( SELECT nom_table
FROM #LIST_TABLES
)
BEGIN
--Se positionner sur la 1ère ligne de la table temporaire
SET @TabEnCoursTraitement = (SELECT TOP 1 nom_table FROM #LIST_TABLES)
-- Insert les infos de la table en cours de traitement dans la table de l'AUDIT
SET @SQL = 'INSERT INTO #T_AUDIT_TABLES EXEC sp_spaceused '''+ @TabEnCoursTraitement + ''';'
EXEC (@SQL);
-- Supprimer la table traitée de la table temporaire
SET @DEL = 'DELETE FROM #LIST_TABLES WHERE nom_table = '''+ @TabEnCoursTraitement + ''';'
EXEC (@DEL)
END
--Supprimer la table temporaire
DROP TABLE #LIST_TABLES
-- AUDIT DES TABLES DE LA BASE DE DONNEES
--> Les 10 tables les plus grosses
SELECT TOP 10 NomTable
, cast(replace([TailleData],'KB','') as int) AS [TailleData (en Ko)]
, cast(replace([TailleIndex],'KB','') as int) AS [TailleIndex (en Ko)]
,cast(replace([EspacePrevu],'KB','') as int) AS [EspaceReservé (en Ko)]
,cast(replace([EspaceInutilise],'KB','') as int) AS [EspaceInutilisé (en Ko)]
FROM #T_AUDIT_TABLES
ORDER BY [TailleData (en Ko)] DESC
--> Les 10 tables ayant le plus de lignes
SELECT TOP 10 NomTable, cast([NbLignes] as int) AS [Nombre de Lignes]
FROM #T_AUDIT_TABLES
ORDER BY [Nombre de Lignes] DESC
--Supprime la table temporaire
DROP TABLE #T_AUDIT_TABLES |
Partager