web-dev-qa-db-fra.com

Comment vérifier si j'atteins la limite de taille de l'édition Express?

Je suis confus. AFAIK SQL Server 2005 Express a une limite de 4 Go de base de données data size. Cependant, j'ai les résultats suivants de sp_spaceused:

what is the actual size of the database

  1. Comment puis-je vérifier si ma base de données atteint la limite de taille?
  2. L'espace non alloué est-il le space left jusqu'à ce que j'atteigne la limite?
  3. Combien d'espace me reste-t-il?
  4. Est-ce que index_size compter dans la limite?
10
g00fy

Voici un bon script que j'ai éhonté sans vergogne ici :

use [Insert DB Name]

select
a.FILEID,
[FILE_SIZE_MB] = 
convert(decimal(12,2),round(a.size/128.000,2)),
[SPACE_USED_MB] =
convert(decimal(12,2),round(fileproperty(a.name, 'SpaceUsed')/128.000,2)),
[FREE_SPACE_MB] =
convert(decimal(12,2),round((a.size-fileproperty(a.name, 'SpaceUsed'))/128.000,2)) ,
NAME = left(a.NAME,15),
FILENAME = left(a.FILENAME,30)
from
dbo.sysfiles a

C'est bien car cela vous donnera l'espace libre dans chaque fichier DB (vous pouvez avoir plusieurs fichiers et peut-être que quelqu'un l'a configuré pour mettre des objets dans chacun) ainsi que la taille libre.

Par exemple, vous disposez d'un fichier de données de 4 Go avec 3 Go d'espace libre. Peut-être que vous avez 1 MDF sans beaucoup de données mais un NDF avec beaucoup de données. Cette requête vous indiquera la taille libre dans chaque fichier et à quelle DB ce fichier est alloué. N'oubliez pas d'ajouter jusqu'à tous les "SPACE_USED_MB" pour chaque base de données pour obtenir la taille totale.

Bonne chance!

Edit: Suppression d'une commande non prise en charge et boguée que je pensais pouvoir échapper en publiant ici pour cette requête. :(

6
Ali Razeghi

La taille de la base de données est la taille du fichier. Regardez la taille réelle du fichier de données (le journal des transactions ne compte pas). Oui, les index comptent. Si vous manquez d'espace, envisagez une mise à niveau vers SQL 2012 Express car cela augmente la limite de taille à 10 Go.

5
mrdenny

Lorsque sp_spaceused affiche la taille de la base de données d'environ 25 Go dans votre premier jeu de résultats, qui inclut le fichier de données/index, et le journal des transactions. Seules les données et les index réels comptent pour les limites de SQL Server Express, vous avez donc environ 3,3 Go de données (comme dans votre deuxième jeu de résultats) et les 22 Go restants seront le journal des transactions. Si vous exécutez "sp_helpdb", cela montre l'image réelle, car elle indique l'utilisation des données et l'utilisation du journal des transactions sur deux lignes distinctes.

1
Ubercoder