SQL資料庫異地全自動備份
阿新 • • 發佈:2020-10-09
其實資料庫備份的重要性不說大家都知道,可能很多人說,我只要做個本地備份就行了,不過,我個人認為:本地備份比不做備份強一點,但和不做也差不多,為什麼這樣說呢,因為誰敢保證你的硬碟不會出問題呢,尤其是一些小企業或者是沒有做RAID的。
一、目的:防止本地資料庫崩潰及硬碟壞掉。
二、遠端備份盤格式為NTFS,因為FAT32格式不能儲存大於<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />4G的檔案,假如你的備份大於這個數的話,改為NTFS吧。
三、要開啟SQL Agent服務,並且是自動的,這個不開啟,根本就談不上什麼備份。
四、開始吧
1、SQL代理-作業-新建作業,這是在SQL2005下的操作,其實SQL2000也是大同小異(管理→SQL Server代理→右鍵作業→新建作業)
2、常規中輸入名稱
3、3"步驟"項→新建,輸入名稱,選中資料,輸入以下語句
語句如下:
declare @sql varchar(4000) <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
declare @backupfile varchar(2000)
declare @now datetime
declare @retaindays int
declare @deletefiles varchar(2000)
declare @cmd varchar(2000)
declare @i int
declare @User varchar(2000)
declare @Pwd varchar(2000)
declare @Store varchar(2000)
declare @IPPart varchar(2000)
declare @IP varchar(2000)
-------------以下自行修改-----------
set @Store='xlu' --------資料庫名-----------
set @User ='spc' ----------使用者名稱----------要管理員許可權
set @Pwd ='aaaabbb' ----------密碼----------密碼不要有符號
set @IPPart='d$\back' -----路徑-----
set @IP='192.168.1.50' -----伺服器IP或主機名--
set @retaindays=3 ---要保留備份的天數
------------以上自行修改------------
---建立對映
--exec master..xp_cmdshell 'net use x: /delete'
set @cmd='net use x: \\'+ @IP +'\'+ @IPPart + ' '+ @Pwd +' /user:'+ @IP +'\'+ @User
exec master..xp_cmdshell @cmd
set @now=getdate()
---刪除以前的備份
set @i=0
while (@i < 30)
begin
set @deletefiles = 'x:\*' +convert(varchar(8),dateadd(dd,[email protected]@i,@now),112)+'*.*'
set @cmd='del ' + @deletefiles
exec master..xp_cmdshell @cmd
set @i = @i +1
end
----開始備份
set @backupfile='x:\data'+ @Store + '_db_'+
replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.BAK'
set @sql='backup database data' + @Store + ' to disk='''[email protected]+''' with retaindays='+convert(varchar(10),@retaindays)
exec (@sql)
set @backupfile='x:\data'+ @Store +'_tlog_'+
replace(replace(replace(convert(varchar,getdate(),20),'-',''),' ',''),':','')+'.TRN'
set @sql='backup LOG data' + @Store + ' TO DISK='''[email protected]+''' with retaindays='+convert(varchar(10),@retaindays)
exec (@sql)
---刪除對映
exec master..xp_cmdshell 'net use x: /delete'
最後別忘記點下確定
4、做個計劃,讓他在指定時間內給你備份
5、怎麼知道他有沒有備份成功,備份完讓他發個郵件給你,做個通知,即SQL郵件,SQL郵件要先配置好,這個就不說了。
6、如查備份成功,如圖下所示:
五、以上語句在SQL2000/2005均除錯通過,如有問題請指正。
本文出自 “sean” 部落格,請務必保留此出處http://sean2009.blog.51cto.com/27412/175355