將服務器上的SqlServer數據庫備份到本地

如何將服務器上的SqlServer數據庫備份到本地電腦
有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腳本,便可生成你須要的腳本
 
 
 
 
 
 
/*數據庫備份存儲過程*/
/*支持從服務器備份數據至本地機器上*/
--  
CREATE   PROCEDURE  up_dbbackup
(
@backup_db_name   VARCHAR ( 128 ),
@filename   VARCHAR ( 128 ),  /*備份路徑+文件名*/
@flag   VARCHAR ( 60 ) OUTPUT
)
AS
SET  NOCOUNT  ON
DECLARE   @sql   NVARCHAR ( 4000 ), @par   NVARCHAR ( 1000 )
IF   NOT   EXISTS (
  
SELECT   *   FROM  master..sysdatabases
    
WHERE  name = @backup_db_name
    )
BEGIN
  
SELECT   @flag = ' 數據庫 ' + @backup_db_name + ' 不存在! '
  
RETURN
END
ELSE
BEGIN
  
IF   RIGHT ( @filename , 1 ) <> ' \ '   AND   CHARINDEX ( ' \ ' , @filename ) <> 0
  
BEGIN
  
/*定義標誌*/  
  
DECLARE   @lFlag   INT
  
EXECUTE   @lFlag = master..xp_cmdshell  ' DIR Z: '
  
IF   @lFlag <> 0
  
BEGIN
    
/* 在客戶機192.168.2.45上創建一個徹底共享目錄db,指定一個用戶名和密碼.Win98用戶不須要用戶名和密碼*/
    
EXECUTE   @lFlag = master..xp_cmdshell  ' NET USE Z: \\192.168.2.45\db$ test /user:ca.atc\test '
    
IF   @lFlag <> 0
    
BEGIN   
      
SELECT   @flag = ' 服務器創建目錄失敗! '
      
RETURN
    
END
  
END  
  
SELECT   @par = ' @filename VARCHAR(1000) '
  
SELECT   @sql = ' BACKUP DATABASE  ' + @backup_db_name + '  TO DISK=@filename WITH INIT '
  
EXECUTE  sp_executesql  @sql , @par , @filename
  
EXECUTE  master..xp_cmdshell  ' NET USE Z: /DELETE '
  
SELECT   @flag = ' 數據庫 ' + @backup_db_name + ' 備份成功! '
  
RETURN
END
ELSE
BEGIN
    
SELECT   @flag = ' 數據庫備份路徑錯誤! '
    
RETURN
END
END
相關文章
相關標籤/搜索