1. 程式人生 > 實用技巧 >SQL資料庫異地全自動備份

SQL資料庫異地全自動備份

其實資料庫備份的重要性不說大家都知道,可能很多人說,我只要做個本地備份就行了,不過,我個人認為:本地備份比不做備份強一點,但和不做也差不多,為什麼這樣說呢,因為誰敢保證你的硬碟不會出問題呢,尤其是一些小企業或者是沒有做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