天天看點

關于SQL異地備份的方法

方案一:SQL自帶的資料庫備份計劃

一:基本思路

1:要實作異地備份,必須使用域使用者帳号來啟動SQL Server服務以及SQL Server Agent服務,因為本地系統帳戶無法通路網絡。

2:在異地機器中建立一個與SQL Server伺服器中啟動SQL Server服務的域使用者帳号同名帳号,且密碼保持相同。在異地機器中建立一個共享檔案夾,并設定合适權限。

注意:建立帳号針對的是工作組模式,如果是基于域模式,那就無須再建帳号

   3:在SQL Server伺服器中建立異地備份的維護計劃,在“完全備份”和“事務日志備份”中,使用輸入異地共享檔案夾的UNC路徑。

4:配置好維護計劃中其它設定。     上面表述可能不太直覺,下面以實際實驗來示範如何做異地備份。實驗網絡模型很簡單,如下圖:                  

關于SQL異地備份的方法

二:異地備份的示範

1:在SQL Server伺服器中以域使用者帳戶啟動SQL Server服務以及SQL Server Agent服務。

本實驗中直接使用administrator帳戶,可以根據實際環境切換其它域使用者帳戶。              

關于SQL異地備份的方法

      2:在檔案備份伺服器中建立一個共享檔案夾,共享權限中删除everyone使用者,加入administrator使用者,權限設定如下圖。            

關于SQL異地備份的方法

      3:在SQL Server伺服器中,打開企業管理器,建立資料庫維護計劃:                

關于SQL異地備份的方法

    4:在維護計劃向導中,選擇計劃備份的資料庫,設定好資料庫優化資訊和檢查完整性等步驟。

5:在向導的“指定資料庫備份計劃”設定好排程計劃。

6:在“指定備份磁盤目錄”界面,手動輸入檔案備份伺服器共享檔案夾UNC路徑。                       

關于SQL異地備份的方法

           7:在“事務日志備份計劃”界面,根據實際環境決定如何備份。

8:按向導設定好其它步驟,完成異地備份維護計劃。   三:測試異地備份是否成功。

1:檢查共享檔案夾中備份檔案是否存在。                    

關于SQL異地備份的方法

2:如果沒有備份成功,請檢視SQL Server日志,并檢查權限設定以及使用者名和密碼是否完全一緻,或者重新啟動兩台電腦!

方案二:采用檔案同步軟體、FTP等同步源伺服器的資料庫備份檔案至備份機

方案三:采用SQL定時作業

舉例:

--建立與YNiang的連接配接,其中garfield是登入YNiang的密碼

Exec master..xp_cmdshell 'net use //YNiang/Backup garfield /User:yy_domain/Administrator'

--備份資料庫miao,YNiang的共享目錄backup要完全共享控制

Backup Database [miao] to Disk = '//YNiang/Backup/miao.bak'

--斷開YNiang的連接配接

Exec master..xp_cmdshell 'net use //YNiang/Backup /delete'

方案三:

1:在目标機器上建共享檔案夾:remotebak,并使某使用者(如管理者)有寫權限,示例administrator,123456。

2:在源機器用指令方式建驅動器映射:

   xp_cmdshell 'net use z: //目标機器IP/remotebak "123456" /user:目标機器IP/administrator'

3:每天自動備份(把以下代碼放在JOB裡,設定每天定時執行)

   declare @shotname varchar(50),@newtime varchar(50),@sql varchar(8000set @newtime=convert(varchar(50),getdate(),120)

set @oldtime = convert(varchar(50),dateadd(dd,-10,getdate()),120)

select @shotname='sharewin'+left(@newtime,4)+substring(@newtime,6,2)+substring(@newtime,9,2)

set @sql = 'backup database sharewin to disk = '+'''z:/'[email protected] +'.bak'''

exec(@sql)

4:備份完成後删除映射:

 xp_cmdshell 'net use z: /delete'