首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 資料移動六大實戰方法完整指南

     編輯:關於SqlServer

前言

身為 DBA,跨伺服器移動資料庫是家常便飯。本文整理六種實務上常用的資料移動方法,各有優缺點,可依據情境選擇最適合的方案。

方法一:DTS 設計師(資料轉換服務)

適用情境:部分資料表移動、異構資料來源間複製、需排程重複執行。

  • 圖形化介面、支援多工作業、操作直覺
  • 企業管理員 → 右鍵資料庫 → 「所有工作」→「匯入/匯出資料」
  • 可另存為 DTS 套件,未來直接執行省時省力
  • 也可直接開啟 DTS 設計師:展開「Data Transformation Services」→「Local Packages」→右鍵「New Package」

注意:有外鍵的資料表需注意移動順序,必要時分批移動或先複製資料再重建鍵值/索引。建議建表時將 FK、PK、索引腳本與建表腳本分離,並置於不同磁碟機以利最佳化。

方法二:BCP 工具(大量複製程式)

特點:介面非圖形化、僅支援 SQL Server 資料表/檢視與文字檔互轉。

優勢:效能極佳、負擔小、記憶體佔用低、速度快。雖 SQL Server 7.0 起不再推薦,但許多資深 DBA 仍偏好使用。詳細參數請參閱線上叢書。

方法三:備份與還原

流程:完整備份 → 複製備份檔到目標伺服器 → 強制還原(覆蓋現有資料庫)。

優點:可完整還原資料庫結構,包含 FK、PK、索引,最適合整庫遷移。

方法四:直接複製資料檔與記錄檔

將 .mdf 與 .ldf 複製到目標伺服器,使用系統預存程序掛載:

-- 掛載完整資料庫
EXEC sp_attach_db @dbname = 'test',
    @filename1 = 'd:\mssql7\data\test_data.mdf',
    @filename2 = 'd:\mssql7\data\test_log.ldf';

-- 僅掛載資料檔(自動建立新記錄檔,原記錄遺失)
EXEC sp_detach_db @dbname = 'test';
EXEC sp_attach_single_file_db @dbname = 'test',
    @physname = 'd:\mssql7\data\test_data.mdf';

方法五:應用程式客製化(PB、VB、Query Analyzer)

透過程式碼執行 SQL 陳述式,彈性最高,對資料庫影響最小。需注意網路傳輸效能。常用語法:

-- 建新表並寫入
SELECT ... INTO new_table FROM ... WHERE ...;

-- 寫入既有表
INSERT INTO old_table SELECT ... FROM ... WHERE ...;

推薦使用 INSERT INTO ... SELECT,結構更清晰、應用範圍更廣。

方法六:SQL Server 複寫功能

功能強大但學習曲線陡峭,適合持續同步需求。成功關鍵在於正確設定發行者/訂閱者、衝突解決策略與監控機制。詳細設定請參考官方文件。

總結建議

方法適用場景優點缺點
DTS部分表、異構來源、排程視覺化、可重複使用外鍵需手動處理順序
BCP大量純文字匯入匯出極快、低資源無 GUI、功能受限
備份/還原整庫遷移、災難復原完整保留所有物件需停機或鎖定
附加檔案同版本伺服器快速移動速度快、無備份檔版本相容性限制
應用程式客製化邏輯、增量同步彈性最高開發成本高
複寫持續同步、分散式自動化程度高複雜、難除錯

實務上常組合使用,例如:初始同步用備份/還原,增量同步用複寫或應用程式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved