Spesso mi è capitato di trovare installazioni di SQL Server fatte su un unico disco C:, perché magari il server era stato acquistato con pochi dischi e di conseguenza l’array creato utilizzando RAID 5 (per chi non ha dimestichezza con RAID, potete dare un’occhiata qui e qui) ed un unico volume.

Una installazione tipica di SQL Server necessita invece di un maggior numero di volumi logici (e quindi, dove possibile, di dischi fisici organizzati in array con il livello RAID opportuno), sia per questioni di performance (i files di database insieme al sistema operativo ed il suo file di paging non sono esattamente la condizione ideale), sia per questioni di affidabilità e sicurezza.

Che cosa si può fare in questi casi ?

Prima di tutto acquistare altri dischi, installarli e configurare uno o più array logici. Ricordate che per i dischi dove vanno solamente i data files di SQL Server è buona norma formattare con l’opzione /A:64K per impostare l’unità di allocazione a 64K (pari ad un extent, cioè l’unità minima di allocazione per SQL Server).

Quindi spostare il database sulle nuove unità logiche. Ci sono diversi modi per farlo(detach/attach, backup/restore, etc), ma quello più sicuro ed affidabile, che consente anche un ripristino veloce della condizione di partenza è questo:

  • Mettere offline il database con il comando ALTER DAioTABASE nome-database SET OFFLINE
  • Copiare i files contenenti i dati del database (*.mdf e *.ndf) nel nuovo disco
  • Copiare i files di log (*.ldf) in un altro disco
  • Notificare a SQL Server le nuove posizioni dei files mediante il comando ALTER DATABASE (la sintassi la trovate qui, vedi esempio F. Moving a file to a new location). Ad esempio:

USE master;
GO

ALTER DATABASE nome-database
MODIFY FILE
(
    NAME = nome-database-datafile,
    FILENAME = N'E:\SQL Server Data Files\nome-database.mdf'
);
GO

ALTER DATABASE nome-database
MODIFY FILE
(
    NAME = nome-database-logfile,
    FILENAME = N'L:\SQL Server Log Files\nome-database.ldf'
);
GO
  • Rimettere online il database con il comando ALTER DATABASE nome-database SET ONLINE

In questo modo, i vecchi files saranno ancora al loro posto e, se necessario, sarà possibile ripristinare la condizione di partenza semplicemente ripetendo i passi sopra elencati con le posizioni originali dei files di database.

Ovviamente, PRIMA di fare qualsiasi cosa, è buona norma fare un backup completo del database… non si sa mai !

Comments are closed.

About me

  • Danilo Dominici
  • Send mail to the author(s) Email
  • Skype
  • View my profile on LinkedIn

Tags

Calendar

<May 2012>
SunMonTueWedThuFriSat
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

Archives

Blogroll

Subscribe to this weblog's RSS feed with SharpReader, Radio Userland, NewsGator or any other aggregator listening on port 5335 by clicking this button.

Statistics

Total Posts: 124
This Year: 4
This Month: 1
This Week: 0
Comments: 30