Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2011, 16h57   #1
Invité de passage
 
Inscription : décembre 2005
Messages : 37
Détails du profil
Informations forums :
Inscription : décembre 2005
Messages : 37
Points : 2
Points : 2
Par défaut taille des tables sql server 2000

Bonjour a tous,

Comment faire pour avoir la liste des tables d'une base de données bien précise et d'avoir la taille qu'occupe chacune de ses table?
zwina2004 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 17h15   #2
Membre régulier
 
Homme Christian Brossault
Administrateur de base de données
Inscription : avril 2006
Messages : 52
Détails du profil
Informations personnelles :
Nom : Homme Christian Brossault
Âge : 39
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : avril 2006
Messages : 52
Points : 72
Points : 72
bonjour,

la requête suivante :
select TABLE_NAME
from INFORMATION_SCHEMA.TABLES
va vous donner la liste des tables pour la base concernée.

Dans les propriétés de la table vous avez la taille occupée des données et des index. Par contre je ne sais pas si, et où, cette info est disponible en base.

Christian
Christianbt est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 17h20   #3
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Remplace Northwind par le nom de ta base

Code :
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
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 22h48   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 950
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 950
Points : 17 769
Points : 17 769
y'a quand même plus simple en passant par les vues DM....
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
SELECT SCHEMA_NAME(o.schema_id) AS TABLE_SCHEMA, 
       o.name AS TABLE_NAME,
       8 * SUM(a.used_pages) AS VOLUME_KO
FROM    sys.objects AS o
        INNER JOIN sys.indexes AS i
              ON o.object_id = i.object_id
        INNER JOIN sys.partitions AS p 
              ON p.object_id = i.object_id 
                 AND p.index_id = i.index_id
        INNER JOIN sys.allocation_units AS a 
              ON a.container_id = p.partition_id
GROUP BY SCHEMA_NAME(o.schema_id), o.name
ORDER BY 1, 2;
A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2011, 23h01   #5
Membre Expert
 
Homme Etienne ZINZINDOHOUE
Ingénieur développement
Inscription : mars 2010
Messages : 1 138
Détails du profil
Informations personnelles :
Nom : Homme Etienne ZINZINDOHOUE
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2010
Messages : 1 138
Points : 2 466
Points : 2 466
Envoyer un message via Yahoo à zinzineti
Citation:
Envoyé par SQLpro Voir le message
y'a quand même plus simple en passant par les vues DM....
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
SELECT SCHEMA_NAME(o.schema_id) AS TABLE_SCHEMA, 
       o.name AS TABLE_NAME,
       8 * SUM(a.used_pages) AS VOLUME_KO
FROM    sys.objects AS o
        INNER JOIN sys.indexes AS i
              ON o.object_id = i.object_id
        INNER JOIN sys.partitions AS p 
              ON p.object_id = i.object_id 
                 AND p.index_id = i.index_id
        INNER JOIN sys.allocation_units AS a 
              ON a.container_id = p.partition_id
GROUP BY SCHEMA_NAME(o.schema_id), o.name
ORDER BY 1, 2;
A +
Au fait, c'est sous SQL 2000
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h30.


 
 
 
 
Partenaires

Hébergement Web