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 01/12/2010, 10h56   #1
Futur Membre du Club
 
Inscription : novembre 2007
Messages : 72
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 72
Points : 16
Points : 16
Par défaut [SQL Server 2000] Nombre d'enregistrements dans toutes les tables utilisateur

Bonjour,

J'aurais besoin d'aide pour écrire la requete pour m'afficher le nombre d'enregistrements dans chaque table utilisateur avec colonne 1 = nom de la table et colonne 2 = nbre d'enregistrement.

Merci d'avance

David
davidkungfu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 12h42   #2
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
Cette requête je l'utilise pour auditer les tables, objectif : purger
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
USE msdb 
GO 
IF OBJECT_ID('dbo.T_AUDIT_TABLES', 'U') IS NOT NULL 
  DROP TABLE dbo.T_AUDIT_TABLES 
GO 
CREATE TABLE msdb.dbo.T_AUDIT_TABLES 
  ( 
  [NomTable] nvarchar(20), 
  [NbLignes] char(11) NULL, 
  [EspacePrevu] varchar(18) NULL, 
  [TailleData] varchar(18) NULL, 
  [TailleIndex] varchar(18) NULL, 
  [EspaceInutilise] varchar(18)  
  ) ON [PRIMARY] 
GO 
-- Se positionner sur la base à auditer  
USE [TaBase]  
GO 
DECLARE @TabEnCoursTraitement VARCHAR(50),@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 msdb.dbo.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 
 
--> Quelles sont les 10 tables ayant le plus de lignes
 
SELECT TOP 10 NomTable 
, cast([NbLignes] AS int) AS [Nombre de Lignes] 
FROM msdb.dbo.T_AUDIT_TABLES 
ORDER BY [Nombre de Lignes] DESC 
 
--> Quelles sont 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 msdb.dbo.T_AUDIT_TABLES 
ORDER BY [TailleData (en Ko)] DESC
Pour plus de détails
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/12/2010, 13h40   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 937
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 937
Points : 17 745
Points : 17 745
Code :
1
2
3
4
5
6
7
8
9
DECLARE @SQL VARCHAR(max);
SET @SQL = '';
SELECT @SQL = @SQL + 'SELECT COUNT(*) AS N, ''' + TABLE_SCHEMA + '.' 
          +  TABLE_NAME +''' AS NOM_TABLE FROM ' 
       + TABLE_SCHEMA + '.' + TABLE_NAME +' UNION ALL '
FROM   INFORMATION_SCHEMA.TABLES
WHERE  TABLE_TYPE = 'BASE TABLE'       
SET @SQL = SUBSTRING(@SQL, 1, LEN(@SQL) - 10)
EXECUTE (@SQL)
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 10
Vieux 01/12/2010, 17h36   #4
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
Code :
DECLARE @SQL VARCHAR(max);
A +
Il me semble que SQL 2000 n'accepte pas varchar (max).

En remplaçant varchar (max) par varchar(8000) on obtient bien le résultat excompté.
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 17h58   #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
J'ai ajouté un tri sur le script de sqlpro

Code :
1
2
3
4
5
6
7
8
9
DECLARE @SQL VARCHAR(8000);
SET @SQL = '';
SELECT @SQL = @SQL + 'SELECT COUNT(*) AS N, ''' + TABLE_SCHEMA + '.' 
          +  TABLE_NAME +''' AS NOM_TABLE FROM ' 
       + TABLE_SCHEMA + '.' + TABLE_NAME +' UNION ALL '
FROM   INFORMATION_SCHEMA.TABLES
WHERE  TABLE_TYPE = 'BASE TABLE'   
SET @SQL = SUBSTRING(@SQL, 1, LEN(@SQL) - 10) + ' ORDER BY N DESC'
EXECUTE (@SQL)
__________________
Etienne ZINZINDOHOUE
Billets-Articles
zinzineti est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/12/2010, 23h04   #6
Futur Membre du Club
 
Inscription : novembre 2007
Messages : 72
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 72
Points : 16
Points : 16
Merci à tous!

David
davidkungfu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h11.


 
 
 
 
Partenaires

Hébergement Web