<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mauro Dalfreddo &#187; Backup</title>
	<atom:link href="http://www.maurodalfreddo.it/archives/tag/backup/feed" rel="self" type="application/rss+xml" />
	<link>http://www.maurodalfreddo.it</link>
	<description>My work, my life... my Blog</description>
	<lastBuildDate>Wed, 04 May 2011 21:00:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Grazie Google</title>
		<link>http://www.maurodalfreddo.it/archives/406/grazie-google</link>
		<comments>http://www.maurodalfreddo.it/archives/406/grazie-google#comments</comments>
		<pubDate>Wed, 22 Sep 2010 20:42:24 +0000</pubDate>
		<dc:creator>Mauro Dalfreddo</dc:creator>
				<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Backup]]></category>
		<category><![CDATA[Hack]]></category>

		<guid isPermaLink="false">http://www.maurodalfreddo.it/?p=406</guid>
		<description><![CDATA[Ho recuperato alcuni contenuti del sito persi, grazie alla cache delle pagine dei motori di ricerca. <a href="http://www.maurodalfreddo.it/archives/406/grazie-google">Continua a leggere<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Come sono riuscito a ripristinare il mio sito da una situazione catastrofica</em></p>
<div id="attachment_408" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-408" title="Altopiano di Asiago 2010" src="http://www.maurodalfreddo.it/wp-content/uploads/2010/09/montagna500b.jpg" alt="" width="500" height="361" /><p class="wp-caption-text">Altopiano di Asiago 2010</p></div>
<p>Ho trascorso le ferie di fine agosto in montagna. Tornando, una decina di giorni fà, ho ricevuto una newsletter dal fornitore dell&#8217;hosting nella quale veniva fatto riferimento ad alcuni disagi subiti da alcuni utenti a causa del crash del database.</p>
<p>Rimanendo un po&#8217; perplesso, ma giusto per curiosità, ho aperto col browser il mio sito, trascurato per molte settimane. </p>
<p>Ho sgranato gli occhi leggendo su una pagina semi-bianca il titolo  &#8220;<em>jhjhlooddwwd: Solo un altro sito WordPress</em>&#8221; !</p>
<p><strong>Orrore e tragedia</strong>! Pochi istanti e la conferma dei tecnici dell&#8217;Hosting provider<br />
e ho capito che il database del mio sito era uno di quelli sfortunati, cioè si era in pratico &#8220;fumato&#8221; a causa di un grave errore hardware del server, ma soprattutto che i dati non potevano essere ripristinati!</p>
<p>Chi predica bene razzola male: non avevo impostato backup periodici, e l&#8217;ultimo backup che avevo fatto manualmente al DB era purtroppo abbastanza vecchio da non contenere alcuni ultimi post! Accidentaccio&#8230; il contenuto di qualche articolo, a mio avviso, era veramente interessante ed era un peccato che fosse stato perso così.</p>
<p>Per fortuna che alcune idee buone vengono al momento giusto: grazie alla cache delle pagine nei motori di ricerca e<br />
grazie anche alla latenza con la quale i crawlers effettuano la scansione dei siti, sono riuscito fortunosamente a recuperare e salvare tutti i contenuti persi.<br />
Se la velocità di scansione fosse stata più elevata, anche per esempio settimanale, avrei recuperato solo parzialmente le informazioni: non tutti i mali vengono per nuocere quindi!</p>
<p>Grazie allora a</p>
<p> <a href="http://www.google.it" target="_blank">Google</a>,  <a href="http://www.bing.com/" target="_blank">Bing</a> e  <a href="http://www.gigablast.com/" target="_blank">Gigablast</a></p>
<p>non lo conoscevo, ma ho utilizzato anche Gigablast, The &#8220;Green&#8221; Search Engine, la cui server farm viene alimentata al 90% dall&#8217;energia pulita del vento.<br />
Poi, per non affidarmi esclusivamente a backup manuali, ho creato opportuni script per il backup:<br />
Il database non è accedibile direttamente, ma solo via Web da MySqlAdmin e accedendo precedentemente da CPanel:<br />
certamente sono precauzioni legate alla sicurezza, ma impediscono l&#8217;implementazione di un automatismo semplice.</p>
<p>Utilizzando Wget in 3 passi, si riesce a scaricare un backup gzippato del DB, simulando le stesse azioni che farebbe un utente reale.</p>
<p>Di seguito riporto il contenuto dello script backup.sh:</p>
<pre><span style="color: #008000;">-- cpanel url
cpurl=https://cp.tophost.it/
cpusr=user1
cppwd=pass1</span></pre>
<pre><span style="color: #008000;">-- mysqladmin url
dburl=$cpurl/mysql/
dbusr=database_user
dbpwd=database_pass</span></pre>
<pre><span style="color: #008000;">-- file location
d=$(dirname $0)
bkfile="backup.sql-$(date +%F).gz"
bkurl="$dburl/export.php?export_type=server&amp;db_select%5B%5D=database_user&amp;what=s
ql&amp;header_comment=&amp;sql_compat=NONE&amp;sql_structure=structure&amp;sql_auto_increment=1&amp;
use_backquotes=1&amp;sql_data=data&amp;showcolumns=yes&amp;extended_ins=yes&amp;max_query_size=5
0000&amp;hexforbinary=yes&amp;sql_type=insert&amp;latex_caption=yes&amp;latex_structure=structur
e&amp;latex_structure_caption=Struttura+della+tabella+__TABLE__&amp;latex_structure_cont
inued_caption=Struttura+della+tabella+__TABLE__+%28continua%29&amp;latex_structure_l
abel=tab%3A__TABLE__-structure&amp;latex_data=data&amp;latex_showcolumns=yes&amp;latex_data_
caption=Contenuto+della+tabella+__TABLE__&amp;latex_data_continued_caption=Contenuto
+della+tabella+__TABLE__+%28continua%29&amp;latex_data_label=tab%3A__TABLE__-data&amp;la
tex_replace_null=%5Ctextit%7BNULL%7D&amp;csv_data=csv_data&amp;export_separator=%3B&amp;encl
osed=%22&amp;escaped=%5C&amp;add_character=%5Cr%5Cn&amp;csv_replace_null=NULL&amp;excel_data=exc
el_data&amp;excel_replace_null=NULL&amp;excel_edition=win&amp;htmlexcel_data=htmlexcel_data&amp;
htmlexcel_replace_null=NULL&amp;htmlword_structure=structure&amp;htmlword_data=data&amp;html
word_replace_null=NULL&amp;pdf_data=pdf_data&amp;pdf_report_title=&amp;xml_data=xml_data&amp;asf
ile=sendit&amp;filename_template=__SERVER__&amp;remember_template=on&amp;compression=gzip"</span><span style="color: #008000;"> </span></pre>
<pre><span style="color: #008000;">/usr/bin/wget  --save-cookies=c --keep-session-cookies --http-user=$cpusr --http
-passwd=$cppwd -O $d/u1 -q $cpurl
/usr/bin/wget  --save-cookies=c1 --load-cookies=c --keep-session-cookies --http-
user=$dbusr --http-passwd=$dbpwd -O $d/u2 -q $dburl
/usr/bin/wget  --save-cookies=c2 --load-cookies=c1 --keep-session-cookies --http
-user=$dbusr --http-passwd=$dbpwd -O $d/$bkfile -q $bkurl</span></pre>
<p> <br />
Per quanto riguarda la copia del filesystem ho utilizzato Lftp.</p>
<pre><span style="color: #008000;">echo "open ftp://$login:$password@$desthost" &gt; $tmpfile
echo "mirror -ec / $d/MIRROR/" &gt;&gt; $tmpfile
echo "exit" &gt;&gt; $tmpfile</span></pre>
<pre><span style="color: #008000;">/usr/bin/lftp -f  $tmpfile</span></pre>
<p> </p>
<div id="attachment_413" class="wp-caption alignnone" style="width: 510px"><img class="size-full wp-image-413" title="Pomeriggio d'agosto sull'Altopiano" src="http://www.maurodalfreddo.it/wp-content/uploads/2010/09/sereno500.jpg" alt="" width="500" height="369" /><p class="wp-caption-text">Pomeriggio d&#39;agosto sull&#39;Altopiano</p></div>
<p>In questi giorni sto finendo di ri-caricare i contenuti persi. Ora, con i backup periodici schedulati e funzionanti, mi sento più tranquillo e sereno.</p>
<h2>Riferimenti</h2>
<p>- lftp: <a href="http://lftp.yar.ru/">http://lftp.yar.ru/</a></p>
<p>- Cpanel: <a href="http://www.cpanel.net/">http://www.cpanel.net/</a></p>
<p>- MysqlAdmin: <a href="http://sourceforge.net/projects/mysql-admin/">http://sourceforge.net/projects/mysql-admin/</a></p>
<p>- Altopiano di Asiago: <a href="http://www.asiago7comuni.to/it/home.htm">http://www.asiago7comuni.to/it/home.htm</a></p>
<div class="thanks_button_div" style="float: left; margin-right: 10px;"><div style="float: left; display: inline;"><input type="button" onclick="thankYouButtonClick(406, 'Hai già lasciato un &rdquo;Grazie&rdquo; per questo articolo')" value="Grazie, mi piace: 0"
                class="thanks_button thanks_custom_button "
                style="background-image:url(http://www.maurodalfreddo.it/wp-content/plugins/thanks-you-counter-button/images/thanks_compact_black1long.png);width:180px; height:26px; font-family: Verdana, Arial, Sans-Serif; font-size: 12px; font-weight: normal;; color:#ffffff;"
                id="thanksButton_406_1" title="Clicca per ringraziare per questo articolo"/></div><div id="ajax_loader_406_1" style="display:inline;visibility: hidden;"><img alt="ajax loader" src="http://www.maurodalfreddo.it/wp-content/plugins/thanks-you-counter-button/images/ajax-loader.gif" /></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.maurodalfreddo.it/archives/406/grazie-google/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Storia di una catastrofe evitata… per un soffio</title>
		<link>http://www.maurodalfreddo.it/archives/74/storia-di-una-catastrofe-evitata%e2%80%a6-per-un-soffio</link>
		<comments>http://www.maurodalfreddo.it/archives/74/storia-di-una-catastrofe-evitata%e2%80%a6-per-un-soffio#comments</comments>
		<pubDate>Sat, 10 Jan 2009 13:08:11 +0000</pubDate>
		<dc:creator>Mauro Dalfreddo</dc:creator>
				<category><![CDATA[Pensieri]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Backup]]></category>

		<guid isPermaLink="false">http://www.maurodalfreddo.it/?p=74</guid>
		<description><![CDATA[Esperienza diretta dell’utilizzo di un disco esterno con tecnologia RAID, della copia massiva di enormi quantità di dati e del recovery dei dati di un disco illeggibile <a href="http://www.maurodalfreddo.it/archives/74/storia-di-una-catastrofe-evitata%e2%80%a6-per-un-soffio">Continua a leggere<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Chi predica bene razzola male</em>, recita il proverbio. Ho sempre sostenuto l’esigenza di backup frequenti dei dati di business o comunque importanti.</p>
<p>Custodivo la maggior parte dei dati sul mio buon vecchio (3 anni oramai) LACIE, un disco esterno USB da 250 GB. Solitamente faccio backup frequenti per i files di progetto e le fotografie digitali su DVD-ROM, ma nulla per quanto riguarda i montaggi dei filmati AVI, essendo questi di dimensioni spropositate: 50-60 GB complessivamente tra i files originali scaricati dalla videocamera digitale JVC, il montato, i files di contorno e i files temporanei… D’altronde per backuppare tutto ciò ci vorrebbe un’unità nastro o un altro disco fisso; e poi i tempi di backup non sarebbero proprio istantanei…</p>
<div id="attachment_327" class="wp-caption alignnone" style="width: 310px"><a href="http://www.maurodalfreddo.it/wp-content/uploads/2010/09/lacie250.jpg"><img class="size-full wp-image-327" title="Lacie unità esterna" src="http://www.maurodalfreddo.it/wp-content/uploads/2010/09/lacie250.jpg" alt="" width="300" height="209" /></a><p class="wp-caption-text">Lacie unità esterna</p></div>
<p>E la perdita dei dati a causa della rottura del disco è per me in generale una cosa tremenda!Così, per razzolare bene ed evitare la perdita dei suddetti montaggi video, ho acquistato un’unità esterna che implementasse la tecnologia RAID 1, ovvero la copia real-time dei dati (a livello di byte) tra due dischi. In questo modo, pur rimanendo la problematica del backup, ho aumentato l’integrità dei dati e la tolleranza ai guasti del disco.Ho acquistato un Mapower TB32, cioè un’unità esterna che espone al Sistema Operativo un unico disco (il mirror), mentre invece internamente ci sono 2 dischi SATA che lavorano in parallelo. La configurazione è semplice e viene effettuata solo in hardware tramite un jumper e lo stato dei  dischi è visualizzato tramite i led sul pannello frontale. Le connessioni esterne sono USB ed eSATA</p>
<div id="attachment_339" class="wp-caption alignnone" style="width: 320px"><a href="http://www.maurodalfreddo.it/wp-content/uploads/2010/09/tb32-raid1.jpg"><img class="size-full wp-image-339" title="Enclosure TB32 raid1" src="http://www.maurodalfreddo.it/wp-content/uploads/2010/09/tb32-raid1.jpg" alt="" width="310" height="294" /></a><p class="wp-caption-text">Enclosure TB32 raid1</p></div>
<p>La <em>sceneggiatura</em> (alla <a href="http://www.maurodalfreddo.it/archives/category/ralph-supermaxieroe" target="_self">Bill Maxwell</a>) prevedeva quindi la copia dei dati tra le due unità USB. E la copia di 200 GB  non è una cosa da farsi con Windows Explorer, che è estremamente lento ed in caso di errori si ferma a metà.</p>
<p>Ho utilizzato invece <a href="http://killprog.narod.ru/killcopye.html" target="_blank">Killcopy</a>, un programma freeware che accellera la copia tra files sfruttando parallellismo e grandi buffer di memoria; inoltre può effettuare una verifica dei bytes scritti (utile nelle copie in rete), riservare lo spazio prima della copia effettiva (per ridurre la frammentazione del file) ed essere utilizzato dalla command line.  Cito brevemente  <a href="http://www.codesector.com/teracopy.php" target="_blank">Teracopy</a>, un altro programma con le stesse caratteristiche, disponibile gratuitamente per usi non commerciali.</p>
<p>E nel bel mezzo della copia massiva, dopo un centinaio di GB copiati,  ecco comparire i primi problemi: errori CRC, dovuti probabilmente a settori danneggiati o illeggibili… Non mi preoccupavo, finché questi comparivano su alcuni file thumb.db o su qualche foto già backuppata; mi sono seriamente preoccupato quando, ad un certo punto è comparso il popup di alert <em>Disco non inizializzato, formattare il disco!</em></p>
<p>Ovviamente non ho seguito il suggerimento di Windows, e mi sono buttato freneticamente nell’attività di data recovery.</p>
<p>Il disco veniva riconosciuto tra le periferiche rimuovibili, la partizione del disco veniva riconosciuta dal Sistema come RAW, non più come NTFS, e questo significava che si era danneggiata l’area del disco dove risiedeva la <a href="http://www.ntfs.com/ntfs-mft.htm" target="_blank">MFT</a>, quindi non l’elettronica o le meccaniche del disco.</p>
<p>Tutto sommato la situazione non era cosè catastrofica: quello che mi interessava veramente l’avevo già copiato e poi avevo alcuni backup delle foto e del software sviluppato; non mi ricordavo se mancava ancora qualche file…</p>
<p>Alla fine ho utilizzato <a href="http://www.runtime.org/data-recovery-software.htm" target="_blank">GetDataBack for NTFS</a>, un eccellente programma commerciale per il recupero dei dati: di fatto analizza i settori del disco alla ricerca di record e pezzi di directory; poi permette il salvataggio dell’indice così ricostruito su un file, in modo tale da poter accedere velocemente ai dati del disco anche in un secondo momento senza dover ripetere l’analisi. </p>
<p>Alla fine ritengo di aver recuperato il 99% dei dati presenti sul disco USB, e comunque il 100% di ciò che mi interessava veramente.</p>
<p>Una storia comunque finita bene, anche se mi ha fatto sudare freddo perdendo un po’di tempo durante il week-end, e che mi ha dato ragione sull’importanza delle politiche di backup e salvaguardia dei dati per mezzo della tecnologia Raid.</p>
<div class="thanks_button_div" style="float: left; margin-right: 10px;"><div style="float: left; display: inline;"><input type="button" onclick="thankYouButtonClick(74, 'Hai già lasciato un &rdquo;Grazie&rdquo; per questo articolo')" value="Grazie, mi piace: 0"
                class="thanks_button thanks_custom_button "
                style="background-image:url(http://www.maurodalfreddo.it/wp-content/plugins/thanks-you-counter-button/images/thanks_compact_black1long.png);width:180px; height:26px; font-family: Verdana, Arial, Sans-Serif; font-size: 12px; font-weight: normal;; color:#ffffff;"
                id="thanksButton_74_1" title="Clicca per ringraziare per questo articolo"/></div><div id="ajax_loader_74_1" style="display:inline;visibility: hidden;"><img alt="ajax loader" src="http://www.maurodalfreddo.it/wp-content/plugins/thanks-you-counter-button/images/ajax-loader.gif" /></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.maurodalfreddo.it/archives/74/storia-di-una-catastrofe-evitata%e2%80%a6-per-un-soffio/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backup automatizzato dei databases</title>
		<link>http://www.maurodalfreddo.it/archives/56/backup-automatizzato-dei-databases</link>
		<comments>http://www.maurodalfreddo.it/archives/56/backup-automatizzato-dei-databases#comments</comments>
		<pubDate>Tue, 20 May 2008 10:00:22 +0000</pubDate>
		<dc:creator>Mauro Dalfreddo</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Backup]]></category>

		<guid isPermaLink="false">http://www.maurodalfreddo.it/?p=56</guid>
		<description><![CDATA[SQL Server: come backuppare tutti i DB presenti e futuri dell'istanza <a href="http://www.maurodalfreddo.it/archives/56/backup-automatizzato-dei-databases">Continua a leggere<span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Posto di seguito un semplice script per effettuare il backup di tutti i database (tranne il tempdb) presenti in un&#8217;istanza di SQL Server. L&#8217;ho implementato su un&#8217;istanza SQL Server 2005 a 64bit, ma funziona anche per le versioni precedenti come SQL2000 e sul nuovissimo SQL2008.</p>
<p>Backuppare i backup in un ambiente di produzione è un esigenza indiscutibile; in questo caso la tipologia di backup prescelta è quella full, che può essere tranquillamente utilizzata per DB di piccole e medie dimensioni, ma che può essere modificata per esigenze diverse. I backup vengono salvati nella cartella C:\BACKUP\SQL\.</p>
<p>Da notare che un backup automatizzato tramite script di tutti i DB presenti sull&#8217;istanza minimizza sicuramente l&#8217;intervento amministrativo.</p>
<pre>DECLARE @dbid int
DECLARE @dbname varchar(100)
DECLARE @sql varchar(1000)</pre>
<pre>DECLARE curs CURSOR LOCAL FORWARD_ONLY FOR
select database_id, [name] from msdb.sys.databases where name &lt;&gt; ''tempdb''
OPEN curs
FETCH NEXT FROM curs INTO @dbid, @dbname
WHILE @@FETCH_STATUS = 0
BEGIN</pre>
<pre>SET @sql = ''BACKUP DATABASE [''+@dbname+''] TO </pre>
<pre>DISK = N''''C:\BACKUP\SQL\''+@dbname+''.bak''''
WITH NOFORMAT, INIT,  NAME = N''''''+@dbname+''-Full Database Backup'''',
SKIP, NOREWIND, NOUNLOAD,  STATS = 10''</pre>
<pre>RAISERROR(N''Executing... %s'',2,-1,@sql)
EXEC( @sql )
FETCH NEXT FROM curs INTO @dbid, @dbname
END</pre>
<p><span id="more-56"></span></p>
<p>Lo script può facilmente essere integrato in un JOB e schedulato ogni notte. Di seguito riporto l&#8217;intero script per creare il JOB, lo STEP TSQL e la SCHEDULAZIONE relativa; ho evidenziato il codice precedente presente proprio nella creazione dello Step. Faccio notare che tutto l&#8217;output dello script viene appeso nel file C:\BACKUP\SQL\history.txt a mo&#8217; di log.</p>
<pre>USE [msdb]
GO</pre>
<pre>BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0</pre>
<pre>IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories
WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category
  @class=N'JOB',
  @type=N'LOCAL',
  @name=N'[Uncategorized (Local)]'
IF (@@ERROR &lt;&gt; 0 OR @ReturnCode &lt;&gt; 0) GOTO QuitWithRollback</pre>
<pre>END</pre>
<pre>DECLARE @jobId BINARY(16)
EXEC @ReturnCode =  msdb.dbo.sp_add_job
  @job_name=N'BACKUP FULL DB (Tutti i DB definiti sul questa istanza)',
  @enabled=1,
  @notify_level_eventlog=0,
  @notify_level_email=0,
  @notify_level_netsend=0,
  @notify_level_page=0,
  @delete_level=0,
  @description=N'Script per eseguire il backup FULL di tutti i database',
  @category_name=N'[Uncategorized (Local)]',
  @owner_login_name=N'sa', @job_id = @jobId OUTPUT

IF (@@ERROR &lt;&gt; 0 OR @ReturnCode &lt;&gt; 0) GOTO QuitWithRollback</pre>
<pre>EXEC @ReturnCode = msdb.dbo.sp_add_jobstep
  @job_id=@jobId,
  @step_name=N'LIST AND BACKUP ALL DATABASES',
  @step_id=1,
  @cmdexec_success_code=0,
  @on_success_action=1,
  @on_success_step_id=0,
  @on_fail_action=1,
  @on_fail_step_id=0,
  @retry_attempts=0,
  @retry_interval=0,
  @os_run_priority=0, @subsystem=N'TSQL',
  @command=N'
<span style="color: #339966;">DECLARE @dbid int
DECLARE @dbname varchar(100)
DECLARE @sql varchar(1000)</span></pre>
<pre><span style="color: #339966;">DECLARE curs CURSOR LOCAL FORWARD_ONLY FOR
select database_id, [name] from msdb.sys.databases where name &lt;&gt; ''tempdb''
OPEN curs
FETCH NEXT FROM curs INTO @dbid, @dbname
WHILE @@FETCH_STATUS = 0
BEGIN</span></pre>
<pre><span style="color: #339966;">SET @sql = ''BACKUP DATABASE [''+@dbname+'']
TO  DISK = N''''C:\BACKUP\SQL\''+@dbname+''.bak''''
WITH NOFORMAT, INIT,  NAME = N''''''+@dbname+''-Full Database Backup'''',
SKIP, NOREWIND, NOUNLOAD,  STATS = 10''</span></pre>
<pre><span style="color: #339966;">RAISERROR(N''Executing... %s'',2,-1,@sql)
EXEC( @sql )
FETCH NEXT FROM curs INTO @dbid, @dbname
END</span></pre>
<pre>',
  @database_name=N'msdb',
  @output_file_name=N'C:\BACKUP\SQL\history.txt',
  @flags=6
IF (@@ERROR &lt;&gt; 0 OR @ReturnCode &lt;&gt; 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR &lt;&gt; 0 OR @ReturnCode &lt;&gt; 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule
  @job_id=@jobId,
  @name=N'Ogni notte',
  @enabled=1,
  @freq_type=4,
  @freq_interval=1,
  @freq_subday_type=8,
  @freq_subday_interval=23,
  @freq_relative_interval=0,
  @freq_recurrence_factor=0,
  @active_start_date=20080506,
  @active_end_date=99991231,
  @active_start_time=20000,
  @active_end_time=235959

IF (@@ERROR &lt;&gt; 0 OR @ReturnCode &lt;&gt; 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver
        @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR &lt;&gt; 0 OR @ReturnCode &lt;&gt; 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
    IF (@@TRANCOUNT &gt; 0) ROLLBACK TRANSACTION
EndSave:</pre>
<p>Il codice completo di <a href="http://www.maurodalfreddo.it/wp-content/uploads/2008/05/backup_automatizzato.zip">backup_automatizzato dei DB di un&#8217;istanza SQL Server</a> è scaricabile a questo link e faclimente  utilizzabile con copia e incolla in SQL Management Studio.</p>
<div class="thanks_button_div" style="float: left; margin-right: 10px;"><div style="float: left; display: inline;"><input type="button" onclick="thankYouButtonClick(56, 'Hai già lasciato un &rdquo;Grazie&rdquo; per questo articolo')" value="Grazie, mi piace: 0"
                class="thanks_button thanks_custom_button "
                style="background-image:url(http://www.maurodalfreddo.it/wp-content/plugins/thanks-you-counter-button/images/thanks_compact_black1long.png);width:180px; height:26px; font-family: Verdana, Arial, Sans-Serif; font-size: 12px; font-weight: normal;; color:#ffffff;"
                id="thanksButton_56_1" title="Clicca per ringraziare per questo articolo"/></div><div id="ajax_loader_56_1" style="display:inline;visibility: hidden;"><img alt="ajax loader" src="http://www.maurodalfreddo.it/wp-content/plugins/thanks-you-counter-button/images/ajax-loader.gif" /></div></div>]]></content:encoded>
			<wfw:commentRss>http://www.maurodalfreddo.it/archives/56/backup-automatizzato-dei-databases/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

