DevAdmin Blog

Blog di Ermanno Goletto
posts - 723, comments - 878, trackbacks - 143

My Links

News

TechNet and Community Tour - Dynamic IT - 23 giugno Torino

Avatar

Curriculum Vitae


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Logo MVP

Logo MCITP

Logo MCTS

Logo MCSA

Logo MCP

Logo Microsoft Certified Business Management Solutions Professional

Microsoft 

Certified Business Management Solutions Specialist


Logo SysAdmin.it SysAdmin.it Staff


Logo UGIdotNET UGIdotNET Contributor


Logo 

UGISS UGISS Contributor


Ermanno Goletto

Article Categories

Archives

Post Categories

Blogs

Friends

Knowledge Base

MVP Sites

Resources

Schedulare un Backup in SQL Server Express 2005

Poichè SQL Server Express non ha il SQL Agent non è possibile schedulare internamente a SQL Server dei processi quali ad esempio il Backup. E' possibile aggirare l'ostacolo utilizzando 3 diversi metodi:

  • Creando uno script per eseguire il Backup da eseguire tramite un Bat utilizzando il tool a riga di comando SQLCMD ed avviando il Bat tramite le operazioni pianificate.
  • Creando uno script WSH e avviandolo tramite le operazioni pianificate.
  • Creando un'applicativo basato sul .NET Framework 2.0, ad esempio in VB.Net, mediante l'utilizzo delle librerie Microsoft.SqlServer.Smo.dll e Microsoft.SqlServer.ConnectionInfo.dll

Ovviamente questa tecnica può anche essere adattata per eseguire altre operazioni come ad esempio lo Skrink del database o di file.

Sommario

Metodo 1

Creazione di uno script di backup

Tramite SQL Server Management Studio avviamo un task per l'esecuzione di un Backup del database sul file C:\Backup\MyDB.bak e dopo aver impostato le opzioni in base alle nostre esigenze salviamo il task sul file C:\Backup\BkpMyDB.sql invece di eseguirlo ottenendo uno script di questo tipo:

BACKUP DATABASE [MyDB] TO DISK = N'C:\Backup\Navision.bak' WITH NOFORMAT, INIT, NAME = N'MyDB-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'MyDB' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'MyDB' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''MyDB'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM DISK = N'C:\Backup\Navision.bak' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND
GO

Creazione di un Bat per l'avvio dello script di backup

Creiamo il file bat C:\Backup\BkpMyDB.bat con i seguenti comandi per avviare lo script di backup e rinominare il file MyDB.bak nel formato MyDB-Yeay-Month-Day-Hour-Minute-Second.bak in modo da conservare più versioni di backup:

SETLOCAL

SET BKPFILENAME=MyDB
SET BKPEXT=bak

SET MONTH=%DATE:~3,2%
SET DAY=%DATE:~0,2%
SET YEAR=%DATE:~6,4%
SET HOUR=%TIME:~0,2%
SET MINUTE=%TIME:~3,2%
SET SECOND=%TIME:~6,2%

SET BKPFILE=%BKPFILENAME%-%YEAR%-%MONTH%-%DAY%-%HOUR%-%MINUTE%-%SECOND%.%BKPEXT%

SQLCMD -S .\SQLEXPRESS -i BKP%BKPFILENAME%.sql

IF EXIST %BKPFILENAME%.%BKPEXT% RENAME %BKPFILENAME%.%BKPEXT% %BKPFILE%

Creazione di un'operazione pianificata

A questo punto creiamo un'operazione pianificata per avviare il file C:\Backup il file BkpMyDB.bat quando intendiamo eseguire il backup in modo da automatizzare il processo. In ogni caso possiamo eseguire backup anche in specifici istanti semplicemente eseguendo il Bat dal prompt dei comadi.

Metodo 2

Creazione di uno script WSH

Creiamo il file bat C:\Backup\BkpMyDB.vbs che tramite l'utilizzo della libreria COM SQLDMO esegue sul file C:\Backup\MyDB-Yeay-Month-Day-Hour-Minute-Second.bak il backup del database:

srvName = ".\SQLEXPRESS"
dbName = "MyDB"
bkpPath = "C:\Backup\"


Set srv = CreateObject("SQLDMO.SQLServer")
srv.LoginSecure = True
srv.Connect srvName

Set bkp = CreateObject("SQLDMO.Backup")


bkp.Database=dbName
bkp.Devices=Files
bkp.Action = SQLDMOBackup_Database
bkp.Files=bkpPath & dbName
bkp.Files=bkp.Files & "-" & Mid(FormatDateTime(Now, 2),7,4)
bkp.Files=bkp.Files & "-" & Mid(FormatDateTime(Now, 2),4,2)
bkp.Files=bkp.Files & "-" & Mid(FormatDateTime(Now, 2),1,2)
bkp.Files=bkp.Files & "-" & Mid(FormatDateTime(Now, 3),1,2)
bkp.Files=bkp.Files & "-" & Mid(FormatDateTime(Now, 3),4,2)
bkp.Files=bkp.Files & "-" & Mid(FormatDateTime(Now, 3),7,2)
bkp.Files=bkp.Files & ".bak"

bkp.SQLBackup srv

srv.Close()

Metodo 3

Applicazione .NET 2.0

SQL Server 2005 mette a disposizione delle nuove librerie in .NET per la gestione tramite applicazioni esterne che vanno a sostituire SQLDMO, in particolare è possibile utilizzare le Microsoft.SqlServer.Smo.dll e Microsoft.SqlServer.ConnectionInfo.dll aggiugendo le relative .NET Reference ad un progetto VB.NET 2005 per poter eseguire il backup del database.

Il seguente codice esegue semplicemente il backup del database è poi possibile avviare l'applicazione tramite le operazioni pianificate oppure integrare nel'applicazione stessa uno schedulatore tramite un timer per costruire di fatto una sorta di SQL Agent.

Dim srvName As String = ".\SQLEXPRESS"
Dim dbName As String = "MyDB"
Dim bkpPath As String = "C:\Backup\"

Dim srv As New Microsoft.SqlServer.Management.Smo.Server(srvName)
Dim bkp As New Microsoft.SqlServer.Management.Smo.Backup
bkp.Action = Microsoft.SqlServer.Management.Smo.BackupActionType.Database
bkp.Database = dbName

Dim filePath As String = bkpPath
filePath = System.IO.Path.Combine(bkpPath, dbName & "-" & Now.Year() & _
"-" & Now.Month.ToString("00") & _
"-" & Now.Day.ToString("00") & _
"-" & Now.Hour.ToString("00") & _
"-" & Now.Minute.ToString("00") & _
"-" & Now.Second.ToString("00"))

bkp.Devices.AddDevice(filePath, Microsoft.SqlServer.Management.Smo.DeviceType.File)
bkp.SqlBackup(srv)

Print | posted on Friday, February 03, 2006 11:54 AM |

Feedback

Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

grazie... interessante!
2/3/2006 1:42 PM | babba
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

Ciao Alex!
<br>Bel tip! Perch&#232; non lo pubblichi su Ugiss? www.ugiss.org
<br>Se sei interessato registrati e poi mandami una mail :-)
<br>
2/5/2006 10:21 AM | Davide Mauri
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

Salve le soluzioni proposte sono davvero molto interessanti, volevo dare il mio contributo nel mio piccolo, anche io mi sono scontrato con la necessità di dover garantire backup e manutenzione settimanali anche con Sql Server Express 2005 ma ho optato per la soluzione degli script di Batch pianificati , sfrutto l'utility da riga di comando sqlmaint presente in tutte le versioni di sql server , grazie a questa utility riesco ad ottenere la cancellazione dei backup più vecchi di una certa data e persino un rapportino delle operazioni svolte in formato html che poi invio ai clienti tramite email, e grazie all'utility da riga di comando del Nero, nerocmd, se gli utenti mettono un cd o dvd con spazio sufficiente riesco anche a masterizzare i backup più recenti
6/7/2008 5:58 PM | Gianni
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

Ciao Gianni e grazie del contributo, sqlmaint è sicuramente un tool flussibile, ma tieni conto che questa funzionalità verrà rimossa nelle future versioni. Dal seguente http://technet.microsoft.com/it-it/library/ms162827.aspx<br /><br />"Questa funzionalità verrà rimossa a partire dalla prossima versione di Microsoft SQL Server. Evitare di utilizzare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare invece la funzione di pianificazione della manutenzione di SQL Server 2005"
6/7/2008 7:32 PM | Alex
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

Infinite per l'informazione , non ne ero al corrente, vorrà dire che grazie correrò ai ripari anche grazie magari sfruttando uno dei tuoi ottimi consigli :-)<br />Grazie
6/8/2008 3:31 PM | Gianni
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

Articolo motlo interessante grazie.<br />Un piccolo aiuto nel caso volessi fare il backup su una periferica di rete???<br />Da Management del SQL non vedo le periferiche di rete, se modifico "a mano" lo script SQL, quando lo avvio mi dice che è imposibile accedere alla periferica di rete<br />come posso fare??<br /><br /><br />Grazie
6/18/2008 12:49 PM | Manuele
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

Per fare backup su share di rete devi assicurarti che l'account del servizio SQL Server abbia accesso alla condivisione di rete e disponga delle autorizzazioni necessarie per eseguire operazioni di scrittura nella condivisione di rete durante il backup e di lettura durante il ripristino<br /><br />per maggiori info vedi qui:<br />http://msdn.microsoft.com/it-it/library/ms179313.aspx
6/18/2008 1:41 PM | Alex
Gravatar

# Schedulare un Backup in SQL Server Express 2005

2/3/2006 12:02 PM | blogs.ugidotnet.org
Gravatar

# Schedulare un Backup in SQL Server Express 2005

2/6/2006 3:54 PM | blogs.ugidotnet.org
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

People in the world take the credit loans from various banks, just because that is comfortable and fast.
7/9/2010 2:27 AM | Weber24Bianca
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

People have an opportunity purchase the written essays or buy custom essay papers at the essay writing services just about this good topic.
7/13/2010 11:47 AM | MasseyOdessa20
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

I am pretty sure that students should make better their writing technique ordering analytical essay from buy papers online writing service. Because a professional research papers writing service is able to write online essays on every sphere of study.
7/16/2010 4:27 PM | GuerreroJOSIE25
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

I opine that you do know how not easy can the customized term paper writing be. Nevertheless, you must not be disappointed, simply because the custom writing services present the essay writing help and there’s not a big problem to buy the online essay and be satisfied.
7/21/2010 8:25 PM | FisherWendi34

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 6 and 1 and type the answer here:

Powered by: