Guide

Come Eseguire Shrink su Database Sql Server

In questa guida vi illustrerò come realizzare l’operazione di Shrink sul vostro database SQL Server per ottenere spazio sul vostro file system. La procedura è davvero semplice, ma mi raccomando… non esagerate con questa operazione! Eseguirla in modo assiduo comporta più danni che altro al vostro database.

La procedura di Shrink DEVE essere effettuata esclusivamente UNA TANTUM (per esempio in seguito ad attività straordinarie) per ridurre lo spazio occupato su file system dal database e dall’annesso file di log. Se eseguito in maniera non attenta, lo shrink della base di dati può provocare un notevole calo nelle prestazioni del database. In questa guida vi illustrerò come realizzare tale operazione sia tramite interfaccia grafica che tramite comandi SQL.

Aprite il programma SQL Server Management Studio (nella guida stiamo utilizzando Microsoft SQL Server 2008). Selezionate il database di cui volete effettuare lo shrink e cliccate con il tasto destro e scegliete il menu Attività – Compatta – Database. A questo punto verrà mostrato all’utente un riepilogo circa lo spazio occupato dal database su file system.

A questo punto, avviando l’operazione di Shrink lo spazio occupato su disco effettivamente verrà ridotto, ma bisogna stare attenti a non esagerare con tale operazione perchè il risultato che si ottiene è un indice di frammentazione altissimo. Inoltre, la compattazione genera una serie di operazioni di I/O, che occupano buona parte della CPU installata sulla macchina e danno luogo a file di log di dimensioni elevate. L’operazione di shrink potrebbe richiedere parecchio tempo (dipende dalle dimensioni del database in considerazione). Una volta terminata l’operazione, cliccando nuovamente con il tasto destro sul nostro database e selezionando il menu Attività – Compatta – Database.

Per effettuare le stesse operazioni elencate negli step precedenti via codice SQL, basterà utilizzare le seguenti istruzioni. DBCC SHRINKDATABASE (database_name | database_id | 0 [, target_percent ] [, { NOTRUNCATE | TRUNCATEONLY } ]). – Database_name è il nome del database che si desidera compattare. – Targent_percent è la percentuale di spazio he si desidera rendere disponibile nel file del database dopo la compattazione. – NOTRUNCATE/TRUNCATEONLY per specificare se eseguire o meno alcuno spostamento di pagine all’interno del file di dati e di log del database selezionato.