1. 程式人生 > >一個世界一個家,我愛中國!

一個世界一個家,我愛中國!

--備份環境:把本地資料庫伺服器的資料庫(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使用者的密碼
--

*/--其次,進行資料庫備份backupdatabase TEST todisk='z:/Test.bak'--最後.備份完成後刪除對映exec master..xp_cmdshell 'net use z: /delete'


將以上放到sqlserver的job 就可以達到自動備份效果了

進一步可以把備份名字自動生成


exec master..xp_cmdshell
'net use z: "//192.168.1.145/d$/dbback" "123456" "/user:192.168.1.145/administrator"'declare@achar(80)
select@a='z:/'+replace(replace
(convert(varchar(19),getDate(),120),'','-'),':','-') +'-service_korea.bak'backupdatabase pubs todisk=@aexec master..xp_cmdshell 'net use z: /delete'

----------------------------------

有A資料庫伺服器,B本機;

我現在想通過在B機器上通過程式碼呼叫SQL來執行A資料庫的備份到B機器上

呼叫的SQL語句為:
BackupDatabase MYDATABASE ToDisk='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使用者的密碼
--
*/--其次,進行資料庫備份 backupdatabase TEST todisk='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@snvarchar(200),@delnvarchar(200)
select@s='',@del=''declare datebak cursorforselect[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

fetchnextfrom datebak into@s,@delwhile@@fetch_status=0beginexec (@del)
       
exec(@s)
       
fetchnextfrom datebak into@s,@delendclose 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指令碼,即可生成你需要的指令碼。

-------------------------------

-- 建立連結伺服器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';