SQL 2000中如何實現異地備份

--你是否有足夠的權限?如果有足夠的權限,可以備份到本機

--如果有,可以用下面的方法,查詢分析器中操作:

-- 創建共享目錄
exec master.dbo.XP_cmdshell 'md c:/bak'
exec master.dbo.XP_cmdshell 'net share bak=c:/bak'

--進行數據備份
backup database 數據庫 to disk='c:/bak/備份.bak'


/*--以下操作在我的電腦中進行:

   打開我的電腦,地址欄中輸入:
   //SQL服務器的計算機名/bak/
   複製裏面的備份.bak到你的電腦就行了

--我的電腦中的操作結束--
*/


--刪除備份生成的文件
exec master..xp_cmdshell 'del c:/bak/備份.bak'

--刪除共享
exec master.dbo.XP_cmdshell 'net share c:/bak /delete /y'
exec master.dbo.XP_cmdshell 'rd c:/bak'



--否則,你還是完全共享你本機的目錄,用下面的方法備份:
backup database 數據庫 to disk='//你的計算機名/共享目錄名/備份文件名'

---或通過映射網絡驅動器(這樣可以解決權限問題)

--1.映射
exec master..xp_cmdshell 'net use z: //xz/c$ "密碼" /user:xz/administrator'

/*--說明:
z:            是映射網絡路徑對應本機的盤符,與下面的備份對應
//xz/c$            是要映射的網絡路徑
xz/administrator        xz是遠程的計算機名,administrator是登陸的用戶名
密碼                        上面指定的administrator用戶的密碼
--
*/



--2.進行數據庫備份
backup database 數據庫名 to disk='z:/備份文件名'


--3.備份完成後刪除映射
exec master..xp_cmdshell 'net use z: /delete'

SQL code
--以下代碼放在作業裏做調度,自動備份、自動刪除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 --2005用max支持2G的字符串 declare @s nvarchar(max),@del nvarchar(max) select @s='',@del='' select @s=@s+ char(13)+'backup database '+quotename(Name)+' to disk =''w:'+Name+'_'+convert(varchar(8),getdate(),112)+'.bak'' with init', @del=@del+ char(13)+'exec master..xp_cmdshell '' del w:'+Name+'_'+convert(varchar(8),getdate()-4,112)+'.bak'', no_output' from master..sysdatabases where dbid>4 order by dbid asc exec (@del) exec(@s)
SQL code 
企業管理器 --管理 --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--屬性--啓動類型--選擇"自動啓動"--確定.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章