--備份環境:把本地數據庫服務器的數據庫(TEST)備份到(192.168.1.145)的C$下
--首先,做一個與客戶端的映射
exec master..xp_cmdshell
'net use z: "http://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'
將以上放到sqlserver的job 就可以達到自動備份效果了
進一步可以把備份名字自動生成
exec master..xp_cmdshell
'net use z: "http://192.168.1.145/d$/dbback" "123456" "/user:192.168.1.145/administrator"'
declare @a char(80)
select @a ='z:/' + replace(replace(convert(varchar(19),getDate(),120),' ','-'),':','-') + '-service_korea.bak'
backup database pubs to disk= @a
exec master..xp_cmdshell 'net use z: /delete'
----------------------------------
有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腳本,即可生成你需要的腳本。
-------------------------------
另一種方法:http://topic.csdn.net/u/20100514/21/0cf9904e-4c61-4364-a216-5186f1bd2070.html?65209
-- 創建鏈接服務器
exec sp_addlinkedserver 'link_server_name','','SQLOLEDB','server_name';
exec sp_addlinkedsrvlogin 'link_server_name','false','sa','sa','password';
exec sp_serveroption 'link_server_name','rpc out','true';
-- 備份 dbname 數據庫
exec('backup database dbname to disk=''c:/dbname.bak'';') at link_server_name;
-- 刪除鏈接服務器
exec sp_droplinkedsrvlogin 'link_server_name','sa';
exec sp_dropserver 'Macedonia';
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

