SQL Server 遠程備份詳解

例子1:

有A數據庫服務器,B本機; 
 
我現在想通過在B機器上通過代碼調用SQL來執行A數據庫的備份到B機器上 
 
調用的SQL語句爲:Backup Database MYDATABASE To Disk='D:/test.bak',這樣備份的目錄是數據庫服務器A的D盤下; 
 
怎麼才能備份到A的D盤下呢? 
 
請各位給予建議,謝謝!
----------------------------------------------------------------------------------------------------
 
要用遠程數據庫可以備份本地。 
本地數據庫也可以備份到遠程。 
 
--備份環境:把數據庫服務器(192.168.1.8)的數據庫(TEST)備份到(192.168.1.145)的C$下 
 
--首先,做一個與客戶端的映射 
exec master..xp_cmdshell 
'net use z: \\192.168.1.145\c$ "密碼" /user:192.168.1.145\administrator' 
/*--說明: 
z: 是映射網絡路徑對應本機的盤符,與下面的備份對應 
\\192.168.1.145\c$    是要映射的網絡路徑 
192.168.1.145\administrator    
192.168.1.145是遠程的計算機名,administrator是登陸的用戶名 
密碼                        上面指定的administrator用戶的密碼 
--*/ 
 
 
--其次,進行數據庫備份 
backup database TEST to disk='z:\Test.bak' 
 
--最後.備份完成後刪除映射 
exec master..xp_cmdshell 'net use z: /delete' 
--來自網絡
 
--以下代碼放在作業裏做調度,自動備份、自動刪除4天前備份
 
--創建映射
exec master..xp_cmdshell 'net use w: \DatabaseBackup$  "password"/user:Roy',NO_OUTPUT
go
-----2000用遊標:
declare @s nvarchar(200),@del nvarchar(200)
select  @s='',@del=''
 
declare datebak cursor for
select 
    [bak]='backup database  '+quotename(Name)+'  to disk =''w:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak''  with init',
    [del]='exec master..xp_cmdshell '' del w:'+Name+'_'+convert(varchar(8),getdate()-4,112)+'.bak'', no_output' 
from master..sysdatabases where dbid>4 --不備份系統數據庫
open datebak
 
fetch next from datebak into @s,@del
while @@fetch_status=0
    begin
        exec (@del)
        exec(@s)
        fetch next from datebak into @s,@del
    end
close datebak
deallocate datebak
go
--刪除映射
exec master..xp_cmdshell 'net use w: /delete'
 
go
 
 
--用JOB. 
--SQL SERVER2000爲例 
 
企業管理器—>數據庫服務器—>管理目錄—>SQL SERVER代理—>作業—>右鍵 選—>新建 
 
常規選項頁—>輸入作業名稱—>選中所有者。 
 
步驟選項頁—>新建—>輸入步驟名—>類型 TSQL腳本—>選擇需要執行的數據庫—>在命令框裏輸入你的SQL 腳本: 
 
如:update tb set 狀態= ...  where 日期........... 
 
你可以點左下角的【分析】按鈕,分析一下語法,分析無誤,按確定。 
 
調度選項頁—>新建調度—>輸入調度名稱—>調度類型 你可以選擇也可以點右下角的【更改】按鈕進行更改,確定。 
 
任務欄 SQL SERVER服務器的小圖標 雙擊 服務 選中 SQL SERVER AGENT,點【開始/繼續】,選中當啓動OS時,自動啓動服務,就可以了。 
 
到你定的那個時間點,SQL SERVER會自動去執行你的腳本的。 
 
如果需要生成腳本的話,企業管理器—>數據庫服務器—>管理目錄—>SQL SERVER代理—>作業—>右鍵你剛完成的作業—>所有任務 
 
—>生成SQL腳本,即可生成你需要的腳本

例子2:

-- 創建網絡映射(Y是盤符;IP地址後面要帶共享文件夾的名稱;password是密碼,雙引號引起;account是遠程電腦的登錄名)
exec master..xp_cmdshell 'net use Y: \\192.168.0.69\sqlbackup "password" /user:192.168.0.69\account'

-- 按日期時間做文件名(注意路徑中的文件夾,需要先建立好)
declare @filename varchar(200)
select @filename = 'Y:\DB\' + replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ','-'),':','') + '.bak'

-- 執行備份(DB是要備份的數據庫名稱)
backup database [DB] to disk = @filename 

-- 刪除網絡映射(Y是盤符,同上)
exec master..xp_cmdshell 'net use Y: /delete'

-- ABEL.CNBLOGS.COM
-- 2013-07-14
需要注意的是,SQL Server 要開啓允許執行 cmd 命令。

企業管理器
--管理
--SQL Server代理
--右鍵作業
--新建作業
--"常規"項中輸入作業名稱
--"步驟"項
--新建
--"步驟名"中輸入步驟名
--"類型"中選擇"Transact-SQL 腳本(TSQL)"
--"數據庫"選擇執行命令的數據庫
--"命令"中輸入要執行的語句:
                      declare @strsql varchar(1000)
                      declare @strdirname varchar(50)
                      declare @strcmd varchar(50)
                      declare @strsend varchar(1000)
                      declare @strdate varchar(50)
                      exec master..xp_cmdshell 'net use \\192.168.0.151\d$ Password /user:192.168.0.151\administrator'
                      set @strsql='backup database new_his to disk=''\\192.168.0.151\d$\serverd\'
                      set @strdirname=replace(substring(convert(varchar(20),getdate(),120),1,10),'-','')+'12'
                      set @strcmd='md \\192.168.0.151\d$\serverd\'
                      set @strcmd=@strcmd+@strdirname
                      exec master..xp_cmdshell @strcmd
                      --print @strsql
                      set @strsql=@strsql+@strdirname+'\new_hisbackup.dat'' with init,nounload,noskip,noformat'
                      --print @strsql
                      exec (@strsql)
 
                     ----其中寫的IP地址及共享目錄,網友自行修改,Password一定要正確
 
--確定
--"調度"項
--新建調度
--"名稱"中輸入調度名稱
--"調度類型"中選擇你的作業執行安排
--如果選擇"反覆出現"
--點"更改"來設置你的時間安排
 
 
然後將SQL Agent服務啓動,並設置爲自動啓動,否則你的作業不會被執行
 
設置方法:
我的電腦--控制面板--管理工具--服務--右鍵 SQLSERVERAGENT--屬性--啓動類型--選擇"自動啓動"--確定.

 exec master..xp_cmdshell 'net use z: \\D6MN1F22\db "qxhbj.0731" /user:D6MN1F22\administrator'

 

SQL server 2005 備份數據庫到局域網共享文件夾

 

 定時備份SQL SERVER的數據庫並且把備份文件複製到另外一臺服務器保存

 

SQL Server如何備份遠程數據庫到本地

 

如果沒有遠程數據庫所在服務器的windows賬號密碼,僅有遠程SQL Server數據庫的用戶密碼,該如何備份遠程數據庫db1的數據到本地呢?

1:在本地安裝通版本的數據庫軟件(比如:SQL Server2000)

2:在本地數據庫服務器上創建數據庫db2;

3:使用本地“企業管理器”註冊遠程數據庫,並將遠程數據庫db1的信息全部複製到本地數據庫db2;

4:在本地備份db2。


發佈了7 篇原創文章 · 獲贊 1 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章