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

SQL Server 7.0 資料庫移動六大方法:DTS、BCP、備份還原、分離附加、應用程式、複寫完整比較

     編輯:關於SqlServer

資料庫管理員頻繁面臨跨伺服器移動資料庫需求。本文比較 SQL Server 7.0 六種主流移動方法,依據資料量、停機窗口、網路頻寬、異質平台等因素提供選型指南。

方法比較總表

方法適用場景優點缺點停機時間
1. DTS 導入/導出部分表、異質來源、需轉換視覺化、支援轉換、可存套件重用大量資料慢、外鍵須手動處理順序短 (可線上)
2. BCP大量純文字/原生格式、自動化腳本效能最好、記憶體佔用低、無 UI 依賴命令列、不支援轉換、外鍵/索引需重建短 (可線上)
3. 備份/還原整庫遷移、災難復原、版本相容最完整 (含統計、權限、全文)、單一檔案需備份檔傳輸時間、目標版本需 ≥ 來源中 (離線還原)
4. 分離/附加 (sp_detach_db / sp_attach_db)同版本實例間移動、檔案層級複製極快 (僅複製 .mdf/.ldf)、保留所有屬性**需離線**、版本不可降級、單一檔案附加丟失記錄短 (離線複製)
5. 應用程式 (SELECT INTO / INSERT SELECT)異構平台、需業務邏輯過濾、跨網段彈性最高、可邊搬邊轉、支援異質 DB開發成本高、效能依賴網路/邏輯可線上 (增量)
6. 複寫持續同步、報表分流、多站點近即時、支援篩選/轉換、雙向設定複雜、需主鍵、Agent/MSDTC、頻寬敏感無 (線上)

關鍵操作細節補充

DTS:外鍵順序處理

  • 先匯入父表 (被參考表) → 再匯入子表
  • 或一次全匯入 → 事後腳本重建 FK/索引
  • 建議:資料檔、記錄檔、索引檔分別置於不同磁碟機提升 IO

備份/還原:強制覆蓋


RESTORE DATABASE TargetDB
FROM DISK = 'C:\Backup\SourceDB.bak'
WITH REPLACE,  -- 強制覆蓋現有資料庫
MOVE 'Source_Data' TO 'D:\MSSQL\Data\Target_Data.mdf',
MOVE 'Source_Log'  TO 'D:\MSSQL\Log\Target_Log.ldf',
STATS = 10;

分離/附加:單一檔案附加 (無記錄檔)


EXEC sp_detach_db 'SourceDB';
EXEC sp_attach_single_file_db @dbname = 'TargetDB',
    @physname = 'D:\MSSQL\Data\Source_Data.mdf';
-- 記錄檔自動重建,原記錄內容遺失

應用程式:兩種核心模式


-- 1. 建新表並複製 (結構+資料)
SELECT * INTO NewTable FROM LinkedServer.SourceDB.dbo.SourceTable WHERE ...;

-- 2. 寫入既有表 (僅資料)
INSERT INTO TargetTable SELECT * FROM LinkedServer.SourceDB.dbo.SourceTable WHERE ...;

模式 2 結構固定、適用增量同步;模式 1 適合初始遷移。

複寫:前置條件 (缺一不可)

  1. SQL Server Agent 啟動
  2. MSDTC (Distributed Transaction Coordinator) 啟動
  3. 所有發行表**必須有主鍵**
  4. 含 text/image 欄位 → 發行項屬性 @schema_option 包含 0x0000000008000000 (記錄複寫)
  5. max text repl size 設定足夠大 (預設 65536 Bytes)
  6. 參與機器啟用隱含共享 (C$, D$...)
  7. Agent 服務帳號**非本地系統帳號** (需網路存取權)
  8. 跨網域 → 建立信任關係

選型決策樹

需求分析
├─ 整庫、同版本、可停機 → 分離/附加 (最快) 或 備份/還原 (最完整)
├─ 整庫、異版本/異平台 → 備份/還原 (升級) 或 DTS/BCP + 手建結構
├─ 部分表、需轉換/清洗 → DTS (視覺化) 或 應用程式 (邏輯複雜)
├─ 持續同步/報表分流 → 複寫 (交易式/合併式)
├─ 極大量 (TB)、網路受限 → BCP 產生檔案 → 實體傳輸硬碟 → BCP 匯入
└─ 雲端遷移 → Azure Database Migration Service / DMA / BACPAC
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved