posts - 315, comments - 268, trackbacks - 15

My Links

News

View Pietro Libro's profile on LinkedIn

DomusDotNet
   DomusDotNet

Pietro Libro

Tag Cloud

Article Categories

Archives

Post Categories

Blogs amici

Links

Shrink, BackUp e ...SSIS

Uno dei task più frequenti nella manutenzione dei database (nel caso SQL Server) è quello di  effettuarne lo Shrink (a riguardo, suggerisco di leggere il commento lasciato da Davide Mauri) ed il BackUp. Finchè le operazioni riguardano un solo database possiamo completare il task utilizzando, ad esempio, SQL Server Management Studio. Nel caso in cui le suddette operazioni debbano essere effettuate su più database la "faccenda si complica" (più che altro diventa ripetitiva) e possiamo
risolvere il problema creando un package SSIS (SQL Server Integration Services). Premetto che googlando si possono trovare diverse soluzioni, utilizzando anche lo stesso sistema. Per iniziare, apriamo Visual Studio (2008 Professional nel mio caso) e partiamo con il creare un nuovo progetto "Integration Services Project" (ovviamente per visualizzare questo template è necessario che tutti i componenti relativi siano correttamente installati e configurati)

Figura_1

Creiamo una nuova connessione al server sql interessato nel "Connection Managers" (tasto destro->"New OLE DB Connection...")

Figura_2

Se si vuole, dopo la creazione della connessione è sempre possibile rinominare la stessa.

A questo punto, nel "Control Flow" non ci resta che trascinare due Task presenti nel Tab
"Maintenance Plan Tasks" della Toolbox, in particolare "Shrink Database Task" e "Back Up Database Task". Per impostare le opzioni ed i database su cui eseguire le operazioni è sufficiente un doppio click sui task aggiunti. Ad esempio cliccando due volte su "Shrink Database Task", otteniamo:

Figura_3

Effettuiamo la stessa operazione sul task relativo al BackUp. A questo punto abbiamo quasi terminato, ma vogliamo che al completamento delle operazioni venga inviata all'amministratore una e-mail di notifica. Potremmo utilizzare "Send Mail Task", ma ha delle limitazioni (tra lequali non è possibile specificare le credenziali d'accesso al server SMTP, ma utilizza l'autenticazione di Windows), per questo, aggiungiamo uno "Script Task" nel nostro "Data Flow". Solito doppio click, e nella finestra visualizzata premiamo
sul bottone con la dicitura "Edit Script...".

Figura_4

Verrà visualizzata una finestra di Visual Studio in cui possiamo scrivere il codice (C#) per l'invio dell'e-mail. Per chi è abituato ad usare Visual Basic, nella finestra delle proprietà del Task è possibile scegliere quale linguaggio utilizzare (nota: nella versione 2005 non era possibile scegliere tra i due linguaggi). Prima di iniziare a scrivere è necessario aggiungere un riferimento all'assembly System.Net.dll al progetto. Scriviamo del codice simile al seguente:

   1:  System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
   2:  message.From = new System.Net.Mail.MailAddress("indirizzo@dominio.it");
   3:  message.To.Add (new System.Net.Mail.MailAddress("amministratore@dominio.it"));
   4:  message.Body =string.Format ("BackUp dei database completato ({0:d})",DateTime.Now );
   5:  message.Subject ="Backup"; 
   6:   
   7:  try
   8:  {
   9:      System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient("smtp.dominio.it");
  10:      smtp.Credentials = new NetworkCredential("username", "password");
  11:      smtp.Send(message); 
  12:   
  13:      Dts.TaskResult = (int)ScriptResults.Success;
  14:  }
  15:  catch (Exception ex)
  16:  {
  17:      Dts.Log(ex.Message, 123, null);
  18:      Dts.TaskResult = (int)ScriptResults.Failure;
  19:  } 

Tramite un costrutto Try...Catch catturiamo eventuali eccezioni ed indichiamo  il successo o il fallimento del task.

Ogni volta che abbiamo la necessità di utilizzare questo Package, non è necessario aprire  un'istanza di Visual Studio, ma è possibile utilizzare l'utility "DTExec.exe"  da riga di comando (ad esempio, DTExec.exe /FILE "package.dtsx". (E' possibile trovare il package nella directory "bin" del progetto)

Technorati Tag: ,,

Print | posted on mercoledì 26 agosto 2009 11:30 | Filed Under [ SQL Server ]

Feedback

Gravatar

# re: Shrink, BackUp e ...SSIS

Lo shrink, se non hai problemi di spazio, è bene evitarlo. Ti aumenta enormemente la frammentazione dei dati e quindi ti diminuisce le performance del db, e se non hai problemi di spazio, qui, non ha senso farlo.
26/08/2009 19:43 | Davide Mauri
Gravatar

# re: Shrink, BackUp e ...SSIS

Grazie per il suggerimento.
26/08/2009 19:53 | Pietro Libro
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET