程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> 更多數據庫知識 >> 在SQL Server中遷移數據的幾種方法,sqlserver

在SQL Server中遷移數據的幾種方法,sqlserver

編輯:更多數據庫知識

在SQL Server中遷移數據的幾種方法,sqlserver


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)如果參與復制的服務器在另外的計算機域中,則需要在這些域之間建立信任關系。


sqlserver2000數據庫數據轉移

要保證原來表的結構和關系不變,最好采用分離附加或者備份還原的方式進行遷移.
 

助:對於SQLSERVER數據庫間的數據遷移操作

表不同 意味著主鍵也不同?
如果你對數據庫一竅不通 最好不要輕易去做,牽扯各種問題太多了!~

最起碼你要調查清楚以前的表和現在的表之間的關系,然後按照對應的字段倒庫,還有以前的view function type procedure等等都需要考慮的!~
建議找個比較熟悉的人去做吧!~
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved