1+ /* #info
2+
3+ # Autor
4+ Rodrigo Ribeiro Gomes
5+
6+ # Detalhes
7+ Um dos primeiro scripts para fazer backup que eu criei
8+
9+
10+ */
11+
12+ DECLARE
13+ @DataAgora datetime
14+ ,@YMD char (8 ) -- > YYYYMMDD
15+ ,@HMS char (6 ) -- > HHMinMinSS
16+ ,@PastaDestino varchar (500 )
17+ ,@Comprimir bit
18+ ,@Tipo char (1 )
19+ ,@Banco varchar (200 )
20+ ,@Stats int
21+
22+ SET @PastaDestino = ' C:\temp'
23+ SET @Comprimir = 1
24+ SET @Tipo = ' F'
25+ SET @Stats = 10
26+
27+
28+ IF OBJECT_ID (' tempdb..#BancosBackup' ) IS NOT NULL
29+ DROP TABLE #BancosBackup;
30+
31+ SELECT
32+ D .name
33+ ,ROW_NUMBER () OVER (ORDER BY SUM (MF .size )) as Seq
34+ INTO
35+ #BancosBackup
36+ FROM
37+ sys .databases D
38+ INNER JOIN
39+ sys .master_files MF
40+ ON MF .database_id = D .database_id
41+ where
42+ D .name not in (' tempdb' ,' model' )
43+ AND D .name not in
44+ (
45+ SELECT
46+ bs .DATABASE_NAME
47+ FROM
48+ msdb .dbo .backupset BS WITH (NOLOCK )
49+ WHERE
50+ BS .backup_finish_date >= ' 03/17/2012 22:00'
51+ )
52+ GROUP BY
53+ D .name
54+
55+
56+ -- > Variáveis auxiliares
57+ DECLARE
58+ @NomeBanco varchar (200 )
59+ ,@ComandoBackup nvarchar (max )
60+ ,@CaminhoArquivoBkp nvarchar (500 )
61+ ,@TipoBackup nvarchar (30 )
62+ ,@ExtensaoBackup char (3 )
63+ ,@NomeArquivoBkp nvarchar (500 )
64+ ,@TimestampIni datetime
65+ ,@TimestampFim datetime
66+ ,@TempoTotalMS int
67+
68+ -- > Definindo a query para o cursor.
69+ DECLARE
70+ c_Backups CURSOR FORWARD_ONLY FAST_FORWARD
71+ FOR
72+ SELECT BB .name FROM #BancosBackup BB ORDER BY BB .seq
73+ ;
74+
75+ OPEN c_Backups;
76+ FETCH NEXT FROM c_Backups INTO @NomeBanco;
77+
78+ SET @TipoBackup = CASE @Tipo
79+ WHEN ' I' THEN ' DIFF'
80+ WHEN ' L' THEN ' LOG'
81+ ELSE ' FULL'
82+ END
83+
84+ SET @ExtensaoBackup = CASE @TipoBackup
85+ WHEN ' LOG' THEN ' trn'
86+ ELSE ' bak'
87+ END
88+
89+ WHILE @@FETCH_STATUS = 0 BEGIN
90+
91+ -- > Determinando as informacoes da data agora.
92+ SET @DataAgora = CURRENT_TIMESTAMP ;
93+ SET @YMD = CONVERT (varchar (8 ),@DataAgora,112 );
94+ SET @HMS = REPLACE (CONVERT (varchar (8 ),@DataAgora,114 ),' :' ,' ' );
95+
96+
97+ SET @NomeArquivoBkp = @YMD+ ' _'+ @HMS + ' $'+ @NomeBanco + ' $'+ @TipoBackup + ' .'+ @ExtensaoBackup;
98+ SET @CaminhoArquivoBkp = @PastaDestino + ' \'+ @NomeArquivoBkp;
99+
100+ SET @ComandoBackup = '
101+ BACKUP DATABASE
102+ ' + @NomeBanco+ '
103+ TO
104+ DISK = ' + QUOTENAME (@CaminhoArquivoBkp,' '' ' )+ '
105+ WITH
106+ STATS = ' + CONVERT (varchar (3 ),@Stats)+ '
107+ ' + CASE @Comprimir WHEN 1 THEN ' ,COMPRESSION' ELSE ' ' END + '
108+ '
109+
110+ RAISERROR (' --------------------------------------------------------------------' ,0 ,0 ) WITH NOWAIT ;
111+ RAISERROR (' Iniciando backup do banco %s' ,0 ,0 ,@NomeBanco) WITH NOWAIT ;
112+ RAISERROR (' %s' ,0 ,0 ,@ComandoBackup) WITH NOWAIT ;
113+
114+ SET @TimestampInI = CURRENT_TIMESTAMP ;
115+ EXEC (@ComandoBackup)
116+ SET @TimestampFim = CURRENT_TIMESTAMP ;
117+ SET @TempoTotalMS = DATEDIFF (ms,@TimestampIni,@TimeStampFim)
118+
119+ RAISERROR (' Tempo total em milisegundos de backup: %d' ,0 ,0 ,@TempoTotalMS) WITH NOWAIT ;
120+ RAISERROR (' --------------------------------------------------------------------' ,0 ,0 ) WITH NOWAIT ;
121+
122+ FETCH NEXT FROM c_Backups INTO @NomeBanco;
123+ END
124+
125+ CLOSE c_Backups;
126+ DEALLOCATE c_Backups;
0 commit comments