TomSun

享受编程的快乐!Attitude is everything!

导航

SQL Backup differential

Posted on 2005-07-01 14:01  TomSun  阅读(473)  评论(0)    收藏  举报

 

 1SET NOCOUNT ON
 2DECLARE @t table(id int IDENTITY,n sysname)
 3DECLARE @i int
 4DECLARE @n sysname
 5DECLARE @sql Nvarchar(4000)
 6DECLARE @cmd varchar(8000)
 7
 8INSERT INTO @t(n)
 9SELECT name FROM dbo.sysdatabases
10WHERE name NOT IN('master','model','msdb','Northwind','pubs','tempdb','tmp')
11
12SET @cmd = 'DEL  E:\backup\sql_data\CompressPack\backupdiff.rar'
13EXEC master..xp_cmdshell @cmd
14
15WHILE (SELECT COUNT(*FROM @t)>0
16BEGIN
17 SELECT TOP 1 @i = id FROM @t
18 SELECT @n = n FROM @t WHERE @i = id
19
20 SET @sql = ''
21 SET @sql = @sql + N'DECLARE @filename varchar(8000);'
22 SET @sql = @sql + N'DECLARE @rar_path varchar(8000);'
23 SET @sql = @sql + N'SET @rar_Path = ''C:\Progra~1\WinRAR\'';'
24 SET @sql = @sql + N'DECLARE @cmd varchar(8000);'
25 SET @sql = @sql + N'EXEC www_ednchina_com.dbo.usp_backup_database '+@n+',''diff'',@filename output;'
26 SET @sql = @sql + N'SET @cmd = @rar_Path + ''rar a E:\backup\sql_data\CompressPack\backupdiff.rar E:\backup\sql_data\'+@n+'\'' + @filename;'
27 SET @sql = @sql + N'EXEC master..xp_cmdshell @cmd';
28
29 EXEC sp_executesql @sql
30
31 DELETE FROM @t WHERE @i = id
32END