Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[SQL 2005] - Taille et volumétrie de plusieurs tables.

2 réponses
Avatar
Houdini
Bonjour à toutes et à tous,

J'ai une base de données qui contient 388 tables. Je cherche à afficher la
taille physique et le nombre d'enregistrements de chacune des tables. Des
tests de charges ont été effectués sur cette base et certaines ont grossi.

la base augmente régulièrement mais trop à mon goût (normalement, elle
devrait faire une centaine de Mo, alors que j'en suis déjà à 12 Go).
peut-être que les index ont besoin d'être retouchés.

La base est en mode full et les journaux sont sauvegardés

Il existe bien la sp_spaceused (pour une table) mais j'ai quand même 388
tables
Existe-t-il une solution un peu automatique pour avoir ce genre
d'informations ?

Merci d'avance pour votre aide.
Cordialement,
Houdini

2 réponses

Avatar
Rv
Salut,


Une ébauche :

USE [MaBDD]

DECLARE @nomTable varchar(500)
DECLARE @RC int

DECLARE Table_Cursor CURSOR FOR
SELECT name FROM dbo.sysobjects WHERE xtype='U'

OPEN Table_Cursor
FETCH NEXT FROM Table_Cursor INTO @nomTable
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC @RC = [dbo].[sp_spaceused] @nomTable, DEFAULT
FETCH NEXT FROM Table_Cursor INTO @nomTable
END

CLOSE Table_Cursor
DEALLOCATE Table_Cursor


A+

Rv


"Houdini" a écrit dans le message de
news:
Bonjour à toutes et à tous,

J'ai une base de données qui contient 388 tables. Je cherche à afficher la
taille physique et le nombre d'enregistrements de chacune des tables. Des
tests de charges ont été effectués sur cette base et certaines ont grossi.

la base augmente régulièrement mais trop à mon goût (normalement, elle
devrait faire une centaine de Mo, alors que j'en suis déjà à 12 Go).
peut-être que les index ont besoin d'être retouchés.

La base est en mode full et les journaux sont sauvegardés

Il existe bien la sp_spaceused (pour une table) mais j'ai quand même 388
tables
Existe-t-il une solution un peu automatique pour avoir ce genre
d'informations ?

Merci d'avance pour votre aide.
Cordialement,
Houdini


Avatar
Fred BROUARD
WITH
I AS
(
SELECT *
FROM sys.dm_db_index_physical_stats(NULL, NULL, NULL, NULL, NULL)
)
SELECT s.name, t.name, SUM(page_count) / 1024.0 AS KO
FROM sys.tables as t
INNER JOIN sys.schemas as s
ON t.schema_id = s.schema_id
INNER join I
ON t.object_id = I.object_id
GROUP BY s.name, t.name


A +

--
Frédéric BROUARD, MVP SQL Server, expert bases de données et langage SQL
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
Enseignant aux Arts & Métiers PACA et à L'ISEN Toulon - Var Technologies
*********************** http://www.sqlspot.com *************************


Houdini a écrit :
Bonjour à toutes et à tous,

J'ai une base de données qui contient 388 tables. Je cherche à afficher la
taille physique et le nombre d'enregistrements de chacune des tables. Des
tests de charges ont été effectués sur cette base et certaines ont grossi.

la base augmente régulièrement mais trop à mon goût (normalement, elle
devrait faire une centaine de Mo, alors que j'en suis déjà à 12 Go).
peut-être que les index ont besoin d'être retouchés.

La base est en mode full et les journaux sont sauvegardés

Il existe bien la sp_spaceused (pour une table) mais j'ai quand même 388
tables
Existe-t-il une solution un peu automatique pour avoir ce genre
d'informations ?

Merci d'avance pour votre aide.
Cordialement,
Houdini