2009-09-02 5 views
3

Nous avons une base de données exécutée sous MSDE (SQL 2000, Service Pack 4) qui réserve des quantités massives d'espace en trop. L'utilisation de sp_spaceused pour chaque table donne une taille totale réservée de 2102560 KB, une taille de données de 364456 KB et une taille inutilisée de 1690760 KB (c'est-à-dire en réservant près de 4 fois l'espace utilisé). Les pires coupables sont les tables qui sont fréquemment écrites mais jamais supprimées (enregistrement des transactions). Généralement, les suppressions sont très rares et très petites en termes de taille et de nombre d'enregistrements.Espace réservé excessif sur SQL Server

Les fichiers de base de données sur le disque sont à la limite de 2 Go, ce qui est à l'origine des problèmes avec les sauvegardes etc.

J'ai essayé DBCC SHRINKDATABASE, DBCC SHRINKFILE et DBCC REINDEX sans effet sur la taille du fichier utilisé sur le disque 2 questions - Comment réduire la taille du fichier de la base de données et comment puis-je empêcher SQL Server de réserver l'espace en trop?

Merci

Paul

Répondre

0

ce que vous pouvez faire est de prendre une sauvegarde complète db, réindexer le db, réduire incrementaly, puis réindexer à nouveau. De cette façon, vous aurez le db dans sa taille actuelle.

également vous devez déplacer vos tables de journalisation à une autre table.

+0

Malheureusement (et je ne sais pas pourquoi), la sauvegarde était impossible. Il expirerait en essayant de sauvegarder sur le disque. –

4

UTILISATION < DBNAME>
GO
BACKUP LOG < DBNAME> AVEC TRUNCATE_ONLY
GO
DBCC SHRINKDATABASE (< DatabaseName>)
GO
DBCC SHRINKFILE (< fichier journal>, 5)
GO
DBCC SHRINKFILE (fichier de données <>, 5)
GO

si vous ne connaissez pas les chemins de fichiers exec sp_helpfile

+0

Essayé cela mais il n'a pas réduit l'espace réservé par 1 octet –

+0

entre votre journal de sauvegarde et le shrinkfile utiliser un DBCC SHRINKDATABASE ('DatabaseName') – Coentje

+0

Cela a fonctionné un régal pour moi. Merci @Russell! Juste une petite remarque: Pour les commandes DBCC SHRINKFILE, j'ai utilisé SELECT * FROM sys.database_files dans la base de données DBNAME et utilisé le champ "Name". –

0

Créer des fichiers séparés pour coupables les pires et les placer dans des groupes de fichiers séparés. Le déplacement de tables vers un autre fichier les comprimera. Cela rendra également le shrinkfile plus efficace. Si nécessaire, vous pouvez créer plus d'un fichier par table.

+0

Le problème est qu'il y a une limite de 2 gig avec MSDE.Créer un nouveau groupe de fichiers est impossible car la limite est sur le total des groupes de fichiers, pas seulement sur chacun d'eux. –

0

Merci pour toutes les suggestions. À la fin, j'ai dû créer une nouvelle base de données vide, copier les données de la base de données massive, puis renommer les bases de données.

Je vais garder un œil sur les tailles réservées. Heureusement, il y avait quelque chose de mal avec la configuration de la base de données qui a causé cela. Aucun de nos autres clients utilisant un logiciel identique/MSDE n'a ce problème.

Questions connexes