>Ciao,
Ciao
>
>Qualcuno sa consigliarmi una procedura per fare dei backup giornalieri
>ed automatici del database, in modo da salvarlo in posti (NAS,
>computer, ecc...) così che nel in cui il server si guastasse
>il database non andrà perso?
>
>So che ci sono dei metodi automatici che offre sql 2005, però
>da quanto ho letto nella versione express non ci sono....
Ho visto che hai postato verso le 3 di notte.. beh, eccomi qui quasi all'alba appena tornato da chissà dove a provare a risponderti. ![](/img/emo2.gif)
Dunque, con SQL Server Express in effetti non hai uno strumento come i JOB delle altre versioni. Però hai un'utilità (ovviamente non solo per la versione Express) che si chiama SQLCMD e che insieme allo scheduler del tuo sistema operativo windows, può fare al caso tuo.
Ma procediamo per passi. SQLCMD è una tool che si esegue dal prompt di dos. Essa ti apre un ulteriore prompt per eseguire comandi SQL direttamente dalla console. Ad ogni modo, puoi farti uno script sql che gestisca il tuo backup (facilmente ricreabile tramite la funzionalità "Genera Script" che ogni maschera di Management studio ha. Ad ogni modo, qui ti allego un esempio di script per un backup full (con controllo checksum):
BACKUP DATABASE [Utili]
TO DISK = N'C:\Programmi\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Utili.bak'
WITH NOFORMAT, NOINIT, NAME = N'Utili-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
GO
Questo comando esegue il backup full di un ipotetico database "Utili" sulla cartella di default per i backup di SQL Server.
Ora, potresti semplicemente sostituire il nome del db, la descrizione del backup e il percorso con i tuoi valori, salvando poi lo script su di un file con estensione SQL, ad esempio, C:\Backup.sql.
Tramite SQLCMD poi, puoi decidere di lanciare il file:
sqlcmd -i C:\Backup.sql
In questo modo SQLCMD si occupa di eseguire il tuo backup. Però, visto che potresti avere più database, con percorsi differenti, non sarebbe male usufruire di variabili. Quindi puoi modificare lo script sql in questo modo:
BACKUP DATABASE $(MyDatabase)
TO DISK = N'$(MyPath)'
WITH NOFORMAT, NOINIT, NAME = N'$(MyDatabase)-Full Database Backup',
SKIP, NOREWIND, NOUNLOAD, STATS = 10, CHECKSUM
GO
Quello che sta tra $() è la variabile o meglio il placeholder della variabile che poi passerai dalla chiamata in questo modo:
Così abbiamo anche parametrizzato lo script ![](/img/emo2.gif)
Ma non è finita, se ti servisse anche un log di quello che è successo, basta aggiungere un -o PercorsodiOutput:
Alla fine dell'esecuzione avrai un resoconto dell'operazione, con eventuali errori ![](/img/emo3.gif)
Infine manca la schedulazione per rendere automatica la "cosa". Queste istruzioni variano da un sistema operativo ad un altro.. quindi sappi che gli esempi sono per XP/2000/2003:
Vai sul pannello di controllo, seleziona Operazioni Pianificate (o Scheduled Tasks)
Crea una nuova operazione tramite il wizard e sfoglia per cercare la tool sqlcmd (percorso C:\Programmi\Microsoft SQL Server\90\Tools\Binn ma dipende dall'installazione di SQL Server)
Poi termina la configurazione definendo periodicità e ricorrenze, nonchè le credenziali di accesso all'operazione.
Ricordati di mettere nel comando quello che ti ho indicato sopra.
Il gioco è fatto.
Ovviamente puoi fare differenziali, backup del log ed altre operazioni, nell'esempio ti ho messo solo il backup full.
Ricorda anche che puoi scrivere variabili interne allo script sql utilizzando la :SetVar
:SetVar VarDiEsempio "CIAO"
SELECT '$(VarDiEsempio)'
In questo modo avrai la select del valore "CIAO" in agiunta al resto delle operazioni.
N.B. l'autenticazione che SQLCMD usa automaticamente è quella di Windows. Quindi se sei un utente che ha gli accessi sufficienti per fare quel che ti serve ok, altrimenti puoi specificare le credenziali di sql utilizzando i parametri ulteriori -U e -P rispettivamente per l'utente e la password. Puoi anche specificare il server/istanza tramite il parametro -S.
Per ulteriori informazioni leggiti questo link:
Utilità SQLCMD
http://technet.microsoft.com/it-it/library/ms162773.aspx
>Grazie
di nulla! ![](/img/emo2.gif)
Alx81 =)
http://blogs.dotnethell.it/suxstellino
http://mvp.support.microsoft.com/profile/Alessandro.Alpi
http://italy.mvps.org