利用批處理自動在異地備份數據庫
在日常數據庫管理中,我們通常採用各種方法將數據庫數據進行備份,目的是保證數據的安
全,而各種備份方法都有自己的優缺點,這裡向大家推薦一種:假設有機器PC-A和PC-B,P
C-A安裝了DB(SQLSERVER2005),並且設置每日定時維護,一般備份到本機磁盤上,而且一
般都要保存幾天,有時為了安全,我們需要把當天的數據備份到PC-B,手工複製太麻煩,用
批處理能解決問題,還可壓縮.
操作如下,首先進入PC-B中從Pc-A映射一個網絡盤,假設PC-A維護計劃是3:00,5:00完
成,那麼PC-B可以制定一個計劃在5:30執行,通過自動壓縮(安裝WinRar即可),只要磁
盤空間大,可以存放1個月的數據都沒有問題,我的DB一天備份要生成20G,通過壓縮
後只有4G,而且自動生成當日日期的壓縮文件;源代碼如下,保存成A.bat即可使用,大家
可根據具體情況,進行相應改動
@Echo OFF
echo 進D盤
D:
cd d:\
IF NOT EXIST COREDBBAK\nul mkdir COREDBBAK
CD COREDBBAK
Echo 獲得當前日期
SET myDate=%date:~0,4%%date:~5,2%%date:~8,2%
Echo 生成某日期目錄
IF NOT EXIST "%myDate%\nul" mkdir "%myDate%"
CD %myDate%
Echo 生成要備份的列表
Echo 先刪除已有的文件
IF EXIST A.txt Del A.txt
Echo 生成列表
dir /s/b/a z:\ | find "%myDate%" >a.txt
Echo 獲個複製文件
for /F %%i in (a.txt) do (xcopy %%i )
Echo 回到上一級
cd ..
Echo 執行壓縮命名
"C:\Program Files\WinRAR\winrar" a %myDate% %myDate%
RmDir %myDate% /S/Q
Echo 完成
Echo on
另外一種:
---磁盤映射
exec master..xp_cmdshell 'net use z: \\xz\c$ "密碼 " /user:xz\administrator '
/*--說明:
z:是映射網絡路徑對應本機的盤符,與下面的備份對應
\\xz\c$是要映射的網絡路徑
xz\administratorxz是遠程的計算機名,administrator是登陸的用戶名
密碼 上面指定的administrator用戶的密碼
--*/
--2.進行數據庫備份
declare @dbname varchar(256)
declare @sql varchar(8000)
declare cur cursor local for
select name from master..sysdatabases where dbid> 4
open cur
fetch next from cur into @dbname
while @@fetch_status=0
begin
set @sql= 'backup database '+@dbname
+ ' to disk= ' 'z:\ '+@dbname
+ '.bak ' ' with password= ' '111 ' ' '
exec(@sql)
fetch next from cur into @dbname
end
close cur
deallocate cur
--3.備份完成後刪除映射
exec master..xp_cmdshell 'net use z: /delete '