天天看點

SQL Server的六種資料移動方法

1.通過工具DTS的設計器進行導入或導出  

    DTS的設計器功能強大,支援多任務,也是可視化界面,容易操作,但知道的人一般不多,如果隻是進行SQL   Server資料庫中部分表的移動,用這種方法最好,當然,也可以進行全部表的移動。在SQL   Server   Enterprise   Manager中,展開伺服器左邊的+,選擇資料庫,右擊,選擇All   tasks/Import   Data...(或All   tasks/Export   Data...),進入向導模式,按提示一步一步走就行了,裡面分得很細,可以靈活的在不同資料源之間複制資料,很友善的。而且可以另存成DTS包,如果以後還有相同的複制任務,直接運作DTS包就行,省時省力。也可以直接打開DTS設計器,方法是展開伺服器名稱下面的Data   Transformation   Services,選Local   Packages,在右邊的視窗中右擊,選New   Package,就打開了DTS設計器。值得注意的是:如果源資料庫要拷貝的表有外鍵,注意移動的順序,有時要分批移動,否則外鍵主鍵,索引可能丢失,移動的時候選項旁邊的提示說的很明白,或者一次性的複制到目标資料庫中,再重建立立外鍵,主鍵,索引。    

    其實建立資料庫時,建立外鍵,主鍵,索引的檔案應該和建表檔案分開,而且用的資料檔案也分開,并分别放在不同的驅動器上,有利于資料庫的優化。    

    2.   利用Bcp工具    

    這種工具雖然在SQL   Server7的版本中不推薦使用,但許多資料庫管理者仍很喜歡用它,尤其是用過SQL   Server早期版本的人。Bcp有局限性,首先它的界面不是圖形化的,其次它隻是在SQL   Server的表(視圖)與文本檔案之間進行複制,但它的優點是性能好,開銷小,占用記憶體少,速度快。有興趣的朋友可以查參考手冊。    

    3.   利用備份和恢複    

    先對源資料庫進行完全備份,備份到一個裝置(device)上,然後把備份檔案複制到目的伺服器上(恢複的速度快),進行資料庫的恢複操作,在恢複的資料庫名中填上源資料庫的名字(名字必須相同),選擇強制型恢複(可以覆寫以前資料庫的選項),在選擇從裝置中進行恢複,浏覽時選中備份的檔案就行了。這種方法可以完全恢複資料庫,包括外鍵,主鍵,索引。  

    4.   直接拷貝資料檔案    

    把資料庫的資料檔案(*.mdf)和日志檔案(*.ldf)都拷貝到目的伺服器,在SQL   Server   Query   Analyzer中用語句進行恢複:  

  EXEC   sp_attach_db   @dbname   =   ’test’,  

  @filename1   =   ’d:mssql7data   est_data.mdf’,  

  @filename2   =   ’d:mssql7data   est_log.ldf’    

    這樣就把test資料庫附加到SQL   Server中,可以照常使用。如果不想用原來的日志檔案,可以用如下的指令:    

  EXEC   sp_detach_db   @dbname   =   ’test’  

  EXEC   sp_attach_single_file_db   @dbname   =   ’test’,  

  @physname   =   ’d:mssql7data   est_data.mdf’    

    這個語句的作用是僅僅加載資料檔案,日志檔案可以由SQL   Server資料庫自動添加,但是原來的日志檔案中記錄的資料就丢失了。    

        

    5.   在應用程式中定制    

    可以在應用程式(PB、VB)中執行自己編寫的程式,也可以在Query   Analyzer中執行,這種方法比較靈活,其實是利用一個平台連接配接到資料庫,在平台中用的主要時SQL語句,這種方法對資料庫的影響小,但是如果用到遠端連結伺服器,要求網絡之間的傳輸性能好,一般有兩種語句:  

  1>select   ...   into   new_tablename   where   ...  

  2>insert   (into)   old_tablename   select   ...   from   ...   where   ...  

    差別是前者把資料插入一個新表(先建立表,再插入資料),後者是把資料插入已經存在的一個表中,我個人喜歡後者,因為在程式設計的結構上,應用的範圍上,第二條語句強于前者。    

    6.   SQL   Server的複制功能    

    SQL   Server提供了強大的資料複制功能,也是最不易掌握的,具體應用請參考相關資料,值得注意的是要想成功進行資料的複制工作,有些條件是必不可少的:  

    1>SQL   Server   Agent必須啟動,MSDTC必須啟動。    

    2>所有要複制的表必須有主鍵。    

    3>如果表中有text或image資料類型,必須使用with   log選項,不能使用with   no_log選項。  

    另外max   text   repl   size選項控制可以複制的文本和圖像資料的最大規模,超過這個限制的操作将失敗。  

    4>在要進行複制的計算機上,應該至少是隐含共享,即共享名是C$或D$…。    

    5>為SQL   Server代理使用的Windows   NT帳号不能是一個本地的系統帳号,因為本地的系統帳号不允許網絡存取。  

    6>如果參與複制的伺服器在另外的計算機域中,必須在這些域之間建立信任關系。本人從事的工作是資料庫管理者,要維護多台伺服器中的資料庫,經常把某台伺服器中的某個資料庫移動到另外一台伺服器,對資料的移動有些心得體會,希望和大家共同交流  

  轉http://sqlserver.itpub.net/post/20961/146735/