Manutenzione database Microsoft SQL Express con expressmaint
Per quanto i nostri web server siano realizzati su architettura LAMP (Linux, Apache, MySQL, PHP) e la nostra offerta di assistenza server proponga molto più spesso soluzioni open source, ci capita comunque di gestire anche server Microsoft. Ecco una possibile soluzione a un problema comune, ovvero poter realizzare un backup di un database di Microsoft SQL Server da linea di comando.
Microsoft SQL Server Express
Dalla versione 2005, Microsoft offre la versione Express, che va a sostituire l’edizione MSDE (Microsoft SQL Destkop Engine) di SQL 2000. La versione Express contiene alcune significative limitazioni:
- una solo CPU utilizzata
- 1GB di RAM massimo utilizzato dal motore
- 4GB di dimensione massima per ciascun database
- mancanza di SQL Server Agent
Fortunatamente, la maggior parte di queste limitazioni, in particolare quelle legate alle risorse e alle dimensioni, sono abbondantemente sopportabili in una media applicazione web, pertanto SQL Server Express è una scelta frequente per i web server che ospitano siti su base ASP o ASP.NET.
Schedulazione processi
La mancanza di SQL Server Agent, tuttavia, è importante. Rispetto a MSDE, SQL Server Express ci fornisce una interfaccia grafica per interagire con i dati, ma non ci permette di schedulare operazioni a orari prefissati. Questo limite si fa sentire soprattutto in relazione alla ovvia necessità di attivare un backup periodico e automatico dei dati.
Ecco allora che ci viene in soccorso una utility come ExpressMaint. Dalla pagina del progetto, potete scaricare il pacchetto (consiste di un solo eseguibile, che non ha bisogno di installazione) e accedere a due articoli introduttivi che forniscono spiegazioni ed esempi di utilizzo. Per comodità li riporto anche qui:
Il programma è flessibile e fornisce una serie di opzioni per realizzare quanto desiderato: è possibile specificare il server a cui connettersi, il database da salvare, il percorso di destinazione del backup, e anche il periodo di conservazione dei backup (in modo che vengano automaticamente cancellati quelli più vecchi del periodo indicato). Un esempio:
ExpressMaint -S localhost\sqlexpress -D databasename -T db -E c:\backup -BU DAYS -BV 7
Con un comando del genere stiamo dicendo a ExpressMaint di connettersi all’istanza “sqlexpress” su localhost, di salvare il database “databasename”, di fare un backup completo (“-T db”), di salvare il file in c:\backup e di eliminare i file più vecchi di 7 giorni. Quest’ultima indicazione è divisa in due parametri, uno che fornisce l’unità di misura (HOURS, DAYS, WEEKS…) e una che fornisce il valore.
Tutto questo può poi essere salvato in un semplice file .bat da eseguire all’orario desiderato tramite le Operazioni pianificate.