SQL 2000 異地備份 步驟【轉】

sql 異地自動備份

 

公司數據庫要作異地備份提高容災性,做到異地自動備份。經過多日查詢嘗試終於成功。

具體環境如下。

數據庫服務器:主機A 用戶名lujia  密碼 jjjj  數據庫KK

文件服務器: 主機B  用戶名cy   密碼 cykingdee  機器名爲cy0efd410de

前期工作: 主機b上新建一個文件夾backup 將其設置爲共享屬性可寫

編寫作業計劃declare @sql varchar(500)
select @sql='//192.168.0.2/backup/kk'+'_db_'+convert(varchar(10),getdate(),112)+substring(convert(varchar(20),getdate(),108) ,1,2)+'.bak'

exec master..xp_cmdshell 'net use //192.168.0.2/backup "cykingdee" /user:cy-b9e1305f8e77/cy'

backup database kk to disk=@sql   --執行遠程備份
go

declare @sql varchar(500)

select @sql='del'+'//192.168.0.2/backup/kk'+'_db_'+convert(varchar(10),dateadd(day,-7,getdate()),112)+
substring(convert(varchar(20),dateadd(day,-7,getdate()),108) ,1,2)+'.bak'

exec master..xp_cmdshell @sql --刪除七天前作的備份。
go

 

備註:1:xp_cmdshell :是SQLSERVER的擴展存儲過程。

                            作用,以操作系統命令行解釋器的方式執行給定的命令字符串 並以文本行方式返回任何輸出。     

語法:參見SQLSERVER聯機幫助

      2:net use      : 是WINDOWS內部的網絡命令。

                            作用,將計算機與共享資源連接或斷開,或者顯示關於計算機連接的信息。該命令還控制持久網絡連接。

3.convert(varchar(10),getdate(),112) 目的是將日前時間轉換成字符串格式,其中varchar(10) 代表轉化的類型爲可變長的字符

型,getdate()表示取得當前的時間,112爲數據轉化的類行。(詳見下文對convert的具體的解釋)

4.substring函數的用法: substring(abcdefgh,2,3)=cde

表示提取字符串abcdefgh,從第二個字符開始,連續3個。

5.dateadd函數的用法:dateadd(interval,number,date) interval表示要加上的時間間隔(類似於單位如年,月,日)

,number 表示的是要加上的數值,date是時間。

dateadd(day,-7,getdate()) 假定目前的時間是2007-06-08-10:20:35

結果應該爲2007-06-08-10:20:35

 

格式:

CONVERT(data_type,expression[,style])

說明:

此樣式一般在時間類型(datetime,smalldatetime)與字符串類型(nchar,nvarchar,char,varchar)

相互轉換的時候纔用到.

例子:

SELECT CONVERT(varchar(30),getdate(),101) now

結果爲:

now

 

 

////////// 更細緻的寫法~!

1--------------
master..xp_cmdshell 'net use  [url=file:////PCName/BAK]//PCName/BAK[/url] passwd /user:username'
備份數據庫
backup database book to disk='//PCName/BAK/DataBaseB.bak'
在企業管理器中新建作業把以上兩個語句加到步驟裏,再在調度中做備份調度,即可
還原的操作也很簡單語句如下
restore database book from disk='//PCName/BAK/DataBaseB.bak'
2------------------
建數據庫sql2000定時異地備份與還原
master..xp_cmdshell 'net use  [url=file:////PCName/BAK]//PCName/BAK[/url] passwd /user:username'
備份數據庫
backup database book to disk='//PCName/BAK/DataBaseB.bak'
在企業管理器中新建作業把以上兩個語句加到步驟裏,再在調度中做備份調度,即可
還原的操作也很簡單語句如下
restore database book from disk='//PCName/BAK/DataBaseB.bak'

3----------------------------------------------
--第一步:在SQL server中做映射網絡盤
--192.168.60.203爲遠程備份機
--administrator爲遠程備份機登錄用戶名
--111111爲遠程機器密碼
--bak爲完全共享的文件夾
--注意:(Z:後面要有一個空格)
exec
master..xp_cmdshell

'net use z: [url=file:////192.168.60.203/bak]//192.168.60.203/bak[/url]   111111   /user:192.168.60.203/administrator'

--第二步:進行數據庫備份
--DIFFERENTIAL爲差量數據備份,在進行差量備份前要先做一次完全備份
backup database dbname to disk='z:/back.dat' with DIFFERENTIAL

--第三步:備份完成後刪除映射
exec master..xp_cmdshell 'net use z: /delete'
如再有不清楚可QQ聯繫我:39867529

4-------------------
1、在域中是最好解決了,EXEC sp_addumpdevice 'disk', 'networkdevice',
'//servername/sharename/path/filename.ext',這個通過域用戶最好辦。
2、第二種方法,適用於所有環境(Windows),比如說服務器上有一個
Windows用戶user1,密碼是123,你首先在查詢分析器裏面通過xp_cmdshell
'net share ...'命令來共享這個文件夾sql,然後xp_cmdshell 'net use ...../USER:user1/123'
把遠程的文件夾映射過來,
然後在查詢分析器裏面

 sp_addumpdevice ‘disk’,‘//servername/sql/back_database.bak,然後sp_addumpdevice把備份設備放到這個文件夾裏面

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章