Les bases peuvent être étendues ou diminuées automatiquement ou manuellement.
Une extension automatique d'une base survient lorsqu'un des fichiers de la base est plein. La propriété FILEGROWTH détermine l'extension en MB, en KB ou en % arrondi à 64 KB près. La propriété de fichier MAXSIZE fixe la taille limite d'extension du fichier..
Une extension manuelle est accomplie avec la commande ALTER DATABASE en changeant la propriété SIZE d'un ou plusieurs fichiers. La nouvelles taille doit être supérieure à la taille courante.
L'option de base autoshrink permet la diminution automatique d'une base. Son effet est le même qu'en faisant DBCC SHRINKDATABASE(dbname, 25). Cette option laisse 25 pour-cent d'espace libre dans la base après la réduction et le surplus est redonné au système. Le processus de diminution, qui a toujours un processus ID (spid) à 6, réalise la diminution le fait toutes les 30 minutes.
Elle peut être réalisée avec les deux commandes DBCC:
DBCC SHRINKFILE ( {file_name | file_id } [, target_size][, {NOTRUNCATE | TRUNCATEONLY} ] ) DBCC SHRINKDATABASE (database_name [, target_percent] [, {NOTRUNCATE | TRUNCATEONLY} ] ) |
DBCC SHRINKFILE permet de diminuer les fichiers de la base courante. Lorsque l'option target_size est spécifiée, DBCC SHRINKFILE tente de réduire le fichier spécifié au nombre de MB donné. Les pages utilisées dans la partie du fichier à libérer sont relogées dans l'espace libre du fichier. Par exemple, pour un fichier de données de 10 MB, DBCC SHRINKFILE avec un target_size de 8 fait que toutes les pages utilisées dans les derniers 2 MB du fichier sont relogées dans n'importe quel emplacement libre du premier 8 MB du fichier. DBCC SHRINKFILE ne peut pas réduire totalement un fichier dans certains cas. Par exemple, si 70 pour-cent des pages dans un fichier de données de 10 MB sont utilisées, DBCC SHRINKFILE avec une option target_size de 6 réduit le fichier à 7 MB, non à 6 MB.
La commande DBCC SHRINKDATABASE diminue tous les fichiers de la base. La base ne peut pas être plus petite que la base model. De plus, une commande DBCC SHRINKDATABASE ne diminuera pas un fichier à une taille plus petite que sa taille minimum. La taille minimum d'un fichier de base est la taille initiale de ce fichier (spécifiée à la création de la base) ou la taille à laquelle le fichier a été explicitement réduit ou étendu, avec la commande ALTER DATABASE ou DBCC SHRINKFILE. Si vous voulez réduire une base au delà de sa taille minimum, vous devez utiliser la commande DBCC SHRINKFILE pour réduire chaque fichier individuel de base à une taille spécifique. La taille à laquelle un fichier est réduit devient sa nouvelle taille minimum.
L'argument numérique donné à la commande DBCC SHRINKDATABASE est un pourcentage d'espace libre à laisser dans chaque fichier de base de données. Par exemple, si vous utilisez 60 MB d'un fichier de base de données de 100 MB, vous pouvez spécifier un pourcentage de réduction de 25 pour-cent. SQL Server va réduire le fichier à une taille de 80 MB, bien que 25 pour-cent de 80 soit 20, cela veut dire qu'il y aura 20 MB d'espaces libre en plus des 60 MB de données original. Donc, le fichier de 80 MB aura 25 pour-cent de son espace libre. En d'autres termes, si 80 MB ou plus des 100 MB du fichier sont utilisés, SQL Server ne peut pas réduire ce fichier pour libérer 25 pour-cent d'espace libre. La taille du fichier restera inchangée.
DBCC SHRINKDATABASE réduit une base données en réduisant chaque fichier un par un. Donc son mécanisme est le même que celui de DBCC SHRINKFILE. SQL Server commence par déplacer les pages au début des fichiers pour libérer de l'espace à la fin et ainsi libérer le nombre approprié de pages libres au système. Deux options des commandes DBCC SHRINKDATABASE et DBCC SHRINKFILE permettent de forcer SQL Server sur certains aspects:
NOTE
BCC SHRINKFILE spécifie une taille en MB. DBCC SHRINK DATABASE spécifie un pourcentage d'espace libre à laisser dans la base.