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

SQL Server 7.0 資料移轉六大實戰方法:從 DTS 到複寫的完整比較

     編輯:關於SqlServer

前言

資料庫管理員常需在伺服器間移動資料庫。本文整理六種主流方法,依情境優劣比較,助您選擇最適策略。

方法比較總覽

方法適用情境優點缺點/注意
1. DTS 設計師/精靈部分/全部資料表移轉、異構資料源、需排程/重複執行視覺化、支援多工作、可存成套件重複使用、靈活對應欄位大量資料速度較慢;外鍵需注意移轉順序或事後重建
2. BCP 公用程式大量資料匯出/匯入、文字檔交換、自動化腳本效能最佳、資源占用低、支援原生格式加速非視覺化、僅支援資料表/檢視表↔文字檔、參數複雜
3. 備份/還原整個資料庫移轉、災難復原、保留所有物件/權限/索引最完整、速度快 (尤其還原)、單一檔案操作需相同資料庫名稱、覆寫風險、跨版本還原有限制
4. 脫離/附加資料庫檔案 (sp_attach_db)同版本伺服器間快速移動、不想備份壓縮極快、僅複製 .mdf/.ldf、保留所有中繼資料需停止資料庫、檔案路徑須相容、跨版本風險
5. 應用程式/TSQL 自訂 (INSERT/SELECT INTO)增量同步、複雜轉換邏輯、跨連結伺服器彈性最高、可嵌入商業邏輯、影響範圍可控需開發維護、大量資料網路傳輸慢、交易一致性自行處理
6. SQL Server 複寫持續同步、多目標、異地備援近即時、支援篩選/轉換、成熟架構設定複雜、需 Agent/MSDTC/主鍵/信任關係、除錯困難

關鍵操作細節補充

DTS 外鍵處理技巧

  • 依參考關係順序分批移轉 (父表先、子表後)
  • 或一次全移再執行腳本重建 FK/索引
  • 建議:建庫時將 FK/索引腳本與建表腳本分離,置於不同磁碟提升效能

脫離/附加指令

-- 附加完整資料庫
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';

TSQL 跨伺服器資料複製

-- 建新表並複製
SELECT * INTO NewTable FROM LinkedSrv.DB.dbo.SourceTable WHERE ...;

-- 附加至既有表
INSERT INTO TargetTable SELECT * FROM LinkedSrv.DB.dbo.SourceTable WHERE ...;

複寫必要條件清單

  1. SQL Server Agent 啟動
  2. MSDTC (Distributed Transaction Coordinator) 啟動
  3. 所有發行資料表必須有主鍵
  4. 含 text/image 欄位時必須使用 WITH LOG 選項
  5. max text repl size 設定足夠大
  6. 參與複寫伺服器需隱含共享 (C$, D$...)
  7. 複寫代理帳號不可為 Local System (需網路存取權)
  8. 跨網域需建立信任關係

選擇建議決策樹

  1. 整庫移轉、同版本、可停機 → 備份/還原 或 脫離/附加
  2. 異構來源、需轉換/排程 → DTS
  3. 極大量資料、追求極致速度 → BCP
  4. 持續同步、多訂閱者 → 複寫
  5. 特殊邏輯、增量、跨雲端 → 自訂 TSQL/應用程式

結語

沒有萬用的移轉方法,關鍵在於評估「資料量、停機容忍度、版本差異、異構需求、持續同步與人力成本」。建議建立標準化移轉作業手冊 (Runbook),記錄各環境適用方法、參數與驗證步驟,確保生產環境操作零失誤。

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