利用批處理自動在異地備份數據庫

利用批處理自動在異地備份數據庫
 
在日常數據庫管理中,我們通常採用各種方法將數據庫數據進行備份,目的是保證數據的安
全,而各種備份方法都有自己的優缺點,這裡向大家推薦一種:假設有機器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 '

原文地址:https://www.cnblogs.com/godwar/p/1228313.html