方法一:DTS 設計師(圖形化、多任務、可存包重用)
- 企業管理器 → 資料庫右鍵 →「所有工作」→「匯入/匯出資料」進入精靈。
- 支援異構資料源間靈活複製,可另存為 DTS 套件排程執行。
- 注意:有外鍵關聯的資料表需依順序移動(先主表後從表),或一次全複製後重建索引/外鍵。
- 建議:建表腳本與索引/外鍵腳本分離,檔案群組分散不同磁碟以利效能。
方法二:BCP 命令列工具(高效能、低資源、無圖形介面)
- 雖 SQL Server 7.0 不再推薦,但資深 DBA 仍偏愛。
- 僅支援 SQL Server 資料表/檢視表 ↔ 文字檔案。
- 優點:速度快、記憶體佔用少、開銷小。參考線上叢書語法。
方法三:備份與還原(最完整、保留所有物件)
- 來源資料庫完整備份至備份裝置。
- 複製備份檔至目標伺服器(本機還原最快)。
- 還原時指定相同資料庫名稱,勾選「強制還原」(覆蓋現有)。
- 可完整保留外鍵、主鍵、索引、權限等所有物件。
方法四:直接複製資料檔(.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/查詢分析器執行 SQL)
- 靈活性高,影響資料庫小。
- 遠端連結伺服器需良好網路效能。
- 常用語法:
SELECT ... INTO new_table FROM ... WHERE ...(建新表)
INSERT INTO old_table SELECT ... FROM ... WHERE ...(插入既有表,結構更彈性)
方法六:SQL Server 複寫(功能強大但最難掌握)
必要條件:
- SQL Server Agent 與 MSDTC 服務啟動。
- 所有發行資料表必須有主鍵。
- 含 text/image 欄位時必須使用
WITH LOG 選項;max text repl size 控制複寫大小上限。
- 參與複寫電腦需至少隱含共享(C$、D$...)。
- SQL Server Agent 服務帳號不可為本地系統帳號(需網路存取權)。
- 跨網域時需建立信任關係。
複寫適合持續同步場景,一次性移轉建議用前五種方法。