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
|
CREATE PROCEDURE P_TableInfos AS
BEGIN
SET NOCOUNT ON
--> Créer dans la base msdb une table pour stocker les infos des tables et index à auditer
CREATE TABLE #T_AUDIT_TABLES
(
[NomTable] nvarchar(100),
[NbLignes] nchar(100) NULL,
[EspacePrevu] varchar(18) NULL,
[TailleData] varchar(18) NULL,
[TailleIndex] varchar(18) NULL,
[EspaceInutilise] varchar(18)
) ON [PRIMARY]
-- Se positionner sur la base à auditer
DECLARE @TabEnCoursTraitement VARCHAR(100),@SQL VARCHAR (100), @DEL VARCHAR (100)
-- Stocker le nom des tables de la base dans une table temporaire
CREATE TABLE #LIST_TABLES (nom_table varchar (50))
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)
-- Insérer les infos de la table en cours de traitement dans la table qui stocke les infos à auditer
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
/****************
-->1. Quelles sont les tables les plus grosses
SELECT 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
****************/
-->2.Les tables et le nombre de lignes
SELECT NomTable
, cast([NbLignes] as int) AS [Nombre de Lignes]
FROM #T_AUDIT_TABLES
ORDER BY [Nombre de Lignes] DESC
DROP TABLE #T_AUDIT_TABLES
END |
Partager