熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

SQL Server的六種數據移動方法

2022-06-13   來源: SQL Server 

  通過工具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設計器值得注意的是:如果源數據庫要拷貝的表有外鍵注意移動的順序有時要分批移動否則外鍵主鍵索引可能丟失移動的時候選項旁邊的提示說的很明白或者一次性的復制到目標數據庫中再重新建立外鍵主鍵索引

  其實建立數據庫時建立外鍵主鍵索引的文件應該和建表文件分開而且用的數據文件也分開並分別放在不同的驅動器上有利於數據庫的優化

   利用Bcp工具

  這種工具雖然在SQL Server的版本中不推薦使用但許多數據庫管理員仍很喜歡用它尤其是用過SQL Server早期版本的人Bcp有局限性首先它的界面不是圖形化的其次它只是在SQL Server的表(視圖)與文本文件之間進行復制但它的優點是性能好開銷小占用內存少速度快有興趣的朋友可以查參考手冊

   利用備份和恢復

  先對源數據庫進行完全備份備份到一個設備(device)上然後把備份文件復制到目的服務器上(恢復的速度快)進行數據庫的恢復操作在恢復的數據庫名中填上源數據庫的名字(名字必須相同)選擇強制型恢復(可以覆蓋以前數據庫的選項)在選擇從設備中進行恢復浏覽時選中備份的文件就行了這種方法可以完全恢復數據庫包括外鍵主鍵索引

   直接拷貝數據文件

  把數據庫的數據文件(*mdf)和日志文件(*ldf)都拷貝到目的服務器在SQL Server Query Analyzer中用語句進行恢復:

  EXEC sp_attach_db @dbname = ’test’

  @filename = ’d:mssqldata est_datamdf’

  @filename = ’d:mssqldata est_logldf’

  這樣就把test數據庫附加到SQL Server中可以照常使用如果不想用原來的日志文件可以用如下的命令:

  EXEC sp_detach_db @dbname = ’test’

  EXEC sp_attach_single_file_db @dbname = ’test’

  @physname = ’d:mssqldata est_datamdf’

  這個語句的作用是僅僅加載數據文件日志文件可以由SQL Server數據庫自動添加但是原來的日志文件中記錄的數據就丟失了

   在應用程序中定制

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

  >select into new_tablename where

  >insert (into) old_tablename select from

  where

  區別是前者把數據插入一個新表(先建立表再插入數據)後者是把數據插入已經存在的一個表中我個人喜歡後者因為在編程的結構上應用的范圍上第二條語句強於前者

   SQL Server的復制功能

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

  >SQL Server Agent必須啟動MSDTC必須啟動

  >所有要復制的表必須有主鍵

  >如果表中有text或image數據類型必須使用with log選項不能使用with no_log選項

  另外max text repl size選項控制可以復制的文本和圖像數據的最大規模超過這個限制的操作將失敗

  >在要進行復制的計算機上應該至少是隱含共享即共享名是C$或D$…

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

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


From:http://tw.wingwit.com/Article/program/SQLServer/201311/22358.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.