[SQL 2005] - Taille et volumétrie de plusieurs tables.
2 réponses
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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <Houdini@discussions.microsoft.com> a écrit dans le message de
news: AC72EE0A-89BA-4841-A242-A89D78CDFC8D@microsoft.com...
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
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
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
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
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