Alex's Weblog

Weblog di Ermanno Goletto (Codename Alex - A Learning EXperience)
posts - 438, comments - 4214, trackbacks - 294

My Links

News

Il blog è stato
trasferito al
 seguente link:


DevAdmin Blog

Add my blog to Live

Foto

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 MCTS

Logo MCSA

Logo MCP

Logo Microsoft Certified Business Management Solutions Professional

Microsoft Certified Business Management Solutions Specialist


Logo UGIdotNET UGIdotNET Contributor


Logo UGISS UGISS Contributor


Logo SysAdmin.it SysAdmin.it Staff


Article Categories

Archives

Post Categories

Blogs

Database

Development

Friends

IT

Knowledge Base

Links

MBS

MCP

MVP Sites

User Groups

Virtualization

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 venerdì 3 febbraio 2006 14:54 |

Feedback

Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

grazie... interessante!
03/02/2006 16:42 | babba
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
07/06/2008 22:58 | 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

"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"
08/06/2008 00:32 | 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 :-)
Grazie
08/06/2008 20:31 | Gianni
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

per maggiori info vedi qui:
http://msdn.microsoft.com/it-it/library/ms179313.aspx
18/06/2008 18:41 | Alex
Gravatar

#  Twitter Trackbacks for Schedulare un Backup in SQL Server Express 2005 [ugidotnet.org] on Topsy.com


Twitter Trackbacks for

Schedulare un Backup in SQL Server Express 2005
[ugidotnet.org]
on Topsy.com
11/05/2010 23:06 | Pingback/TrackBack
Gravatar

# re: Schedulare un Backup in SQL Server Express 2005

pearl strand


jewelry sets


pearl jewelry sets


sets jewelry


shell pearl sets

12/10/2011 10:37 | lewis
Gravatar

# Schedulare un Backup in SQL Server Express 2005 | DevAdmin Blog

Schedulare un Backup in SQL Server Express 2005 | DevAdmin Blog
28/01/2014 23:20 | Pingback/TrackBack
Gravatar

# DOG SERVICE PROGRAM

Wild Goose Chasers
DOG SERVICE PROGRAM USING BORDER COLLIES
Dog Service is a daily service that essentially introduces a trained border collie that is perceived predator to Canada geese . This is one way to teach them that the area is not a safe place to nest or feed.This program works best before the geese become attached to the area. It is legal to chase geese without a state or federal permit provided they are not handled or touched by a person or dog.
The most effective results from dog chasing methods come from actively and regularly using a combination of the harassment techniques each time the geese appear on your property. It is critical when caring out these methods that all the geese have left the property. Geese must continue to feel threatened or they will return to the property, which is why repeated and consistent use of harassment techniques is necessary.
21/03/2018 15:11 | Wild Goose Chasers
Comments have been closed on this topic.

Powered by:
Powered By Subtext Powered By ASP.NET