18/12/2007
Manutenzione di SQL Server con PowerShell e SMO
Una delle omissioni più sentite dagli amministratori di database all’interno dell’edizione Express di SQL Server 2005 è sicuramente il supporto per lo scheduling dei job ed i piani di manutenzione. Contrariamente alle edizioni Workgroup, Standard ed Enterprise, infatti, l’edizione Express non comprende SQL Agent, il servizio che rende possibile la schedulazione di job all’interno di SQL Server. In questo articolo vedremo come effettuare alcune attività di manutenzione (e non solo) di SQL Server tramite PowerShell, sopperendo, in qualche maniera, alla mancanza di funzionalità della versione Express del prodotto.
Nonostante SQL Agent non sia un tool fondamentale per l’esecuzione di SQL Server, spesso si rivela di enorme aiuto nell’automazione delle operazioni di manutenzione dei database, in particolare backup e ricostruzione (o aggiornamento) degli indici. Fortunatamente, SQL Server 2005 è provvisto di un framework di gestione realizzato tramite Microsoft .NET, chiamato SMO (SQL Server Management Objects), grazie al quale è possibile colloquiare ad alto livello con SQL Server ed effettuare la quasi totalità delle operazioni necessarie per gestire questo prodotto; agli utenti più esperti farà sicuramente piacere sapere che SQL Server Management Studio (SSMS) è stato costruito utilizzando SMO e tutte le operazioni che è possibile svolgere su SQL Server grazie a questo tool sono, di fatto, chiamate a metodi degli oggetti resi disponibili da SMO.
Una volta installati gli assembly SMO per SQL Server 2005 (disponibili a
questo indirizzo), questi saranno disponibili di default nel percorso %PROGRAMFILES%\Microsoft SQL Server\90\SDK\Assemblies. Tra gli assembly di interesse per lo scopo di questo articolo, Microsoft.SqlServer.Smo.dll è il più importante e contiene i tipi .NET in grado di effettuare le attività di manutenzione di SQL Server; è interessante notare come Microsoft abbia creato un layer di compatibilità all’interno di SMO, tale che risulta possibile utilizzarne gli assembly per gestire SQL Server a partire dalla versione 7.0, in maniera trasparente.
Caricare l’assembly principale di SMO tramite PowerShell è semplice come utilizzare la reflection di .NET:
[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
La guida completa di SMO è naturalmente disponibile su MSDN, a
questo indirizzo.