SQL Server - La FAQConsultez toutes les FAQ
Nombre d'auteurs : 13, nombre de questions : 119, dernière mise à jour : 31 mai 2011 Ajouter une question
Question / réponses à tout ce que vous avez toujours voulu savoir sur Microsoft SQL Server sans jamais oser le demander
- Comment connaître la taille occupée par une base de données ?
- Comment connaître la taille occupée par une table d'une base de données.
- Comment connaître l'espace occupé par les index d'une base de données ou d'une table ?
- Comment connaître la taille des fichiers mdf et ldf d'une base de données ?
- Comment déterminer la table de chaque table pour une base donnée ?
Pour connaîttre la taille des objects d'une base de données,
Ms SQL Server met
à votre disposition une procedure stockée:
Code tsql : | Sélectionner tout |
1 2 | sp_spaceused [[@objname =] 'objname'] <br/> [,[@updateusage =] 'updateusage']<br/> |
taille et updateusage un varchar(5) qui peut prendre 2 valeurs (false,true).
updateusage, fixé à true permet à MS SQL Serveur de recalculer la taille des
pages de données.
Ainsi, pour connaîttre la taille d'une base de données, on utilise la procedure
sans indiquer le nom de l'object.
Exemple :
Pour connaîttre la taille de la base de donnée DB_ESSAI, on :
Code tsql : | Sélectionner tout |
1 2 3 4 | USE DB_ESSAI GO EXEC sp_spaceused GO |
Microsoft SQL server met à votre disposition une procédure stockée sp_spaceused
pour déterminer la taille d'une base de données et des tables de la base de données.
Exemple:
A. Informations sur l'espace occupé par une table
Cet exemple présente la quantité d'espace alloué (réservé) à la table titles, l'espace utilisé par les données, l'espace utilisé par le ou les index et l'espace inutilisé réservé par les objets de base de données.
Code tsql : | Sélectionner tout |
1 2 | USE pubs EXEC sp_spaceused 'titles' |
Cet exemple récapitule l'espace utilisé dans la base de données courante et utilise le paramètre facultatif @updateusage.
Code tsql : | Sélectionner tout |
1 2 | USE pubs sp_spaceused @updateusage = 'TRUE' |
Code tsql : | Sélectionner tout |
1 2 | USE db_essai EXEC sp_spaceused 'mon_objet' |
Code tsql : | Sélectionner tout |
1 2 3 4 5 6 | use myDB GO SELECT 8 * SUM(CONVERT(DEC(15),SIZE)) as Taillemdf FROM dbo.sysfiles WHERE (status64 = 0) GO |
Code tsql : | Sélectionner tout |
1 2 3 4 5 6 | use myDB GO SELECT 8 * SUM(CONVERT(DEC(15),SIZE)) as Tailleldf FROM dbo.sysfiles WHERE (status64 != 0) GO |
Grâce à la procédure suivante permettant l'obtention d'informations sur toutes les tables d'une base (nombres de lignes, espace alloué, espace utilisé).
Code tsql : | Sélectionner tout |
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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | create proc Admin_Details_tables as BEGIN -- ------------------------- -- I. ACQUISITION DE DONNEES -- ------------------------- -- Initialisations paramètres divers set nocount on -- ne renvoie pas le nombre de lignes set fmtonly off -- renvoi des données off -- Création de la table résultat create table #Admin_taille_tables ( [name] char(128), rows char(11), reserved char(18), data char(18), index_size char(18), unused char(18) ) -- Variable récupérant le nom des tables via tables 'sysobject' et 'Admin_taille_tables' par curseur declare @nom varchar(128) -- Variables récupérant les valeurs des champs de usr_tables declare @rows char(10), @reserved char(15), @data char(15), @index_size char(15), @unused char(10) -- Curseur pour obtenir le nom de chaque table via table 'sysobjects' declare curs cursor scroll for select name from sysobjects where xtype = 'U ' open curs fetch next from curs into @nom -- Enrichissiment de la table 'admin_taille_tables' par 'sp_spaceused' while @@fetch_status = 0 begin insert into #Admin_taille_tables exec sp_spaceused @nom fetch next from curs into @nom end close curs deallocate curs -- ----------------------------------------------------------------------------------------- -- II. Suppression des libellé alpha: '123 KB' doit donner '123' pour traitements ultérieurs -- ----------------------------------------------------------------------------------------- -- Lecture de la table 'Admin_taille_tables' pour traitement des données via un curseur declare curs cursor scroll for select name, rows, reserved, data, index_size, unused from #Admin_taille_tables open curs fetch next from curs into @nom, @rows, @reserved, @data, @index_size, @unused -- Traitement des données while @@fetch_status = 0 begin set @reserved = substring(@reserved,1,len(@reserved) - 3) set @data = substring(@data,1,len(@data) - 3) set @index_size = substring(@index_size,1,len(@index_size)- 3) set @unused = substring(@unused,1,len(@unused) - 3) begin tran update #Admin_taille_tables set reserved = @reserved , data = @data , index_size = @index_size , unused = @unused where name = @nom commit tran fetch next from curs into @nom, @rows, @reserved, @data, @index_size, @unused end close curs deallocate curs -- Alter de la table 'Admin_taille_tables' alter table #Admin_taille_tables alter column name varchar(25) alter table #Admin_taille_tables alter column rows bigint alter table #Admin_taille_tables alter column reserved bigint alter table #Admin_taille_tables alter column data bigint alter table #Admin_taille_tables alter column index_size bigint alter table #Admin_taille_tables alter column unused bigint -- Affichage résultats select * from #Admin_taille_tables order by data desc, rows desc drop table #Admin_taille_tables END |
Proposer une nouvelle réponse sur la FAQ
Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour çaLes sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2024 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.