資料庫移動最常用分離/附加法。本文完整實戰示範:1) 查詢檔案資訊:EXEC sp_helpdb 'mytest' 取得邏輯名/物理路徑/大小;2) 分離:EXEC sp_detach_db 'mytest', true (@skipchecks=true 跳過 UPDATE STATISTICS);3) 檔案系統移動:剪貼 .mdf/.ldf 至新目標目錄 (如 E:\SQL Data);4) 附加:EXEC sp_attach_db @dbname='mytest', @filename1='E:\SQL Data\mytest_data.mdf', @filename2='E:\SQL Data\mytest_log.ldf';5) 驗證:EM 檢視屬性 / sp_helpdb 確認新路徑。重要限制:sp_attach_db 僅支援最多 16 個檔案,超過需用 CREATE DATABASE ... FOR ATTACH;僅能附加曾由 sp_detach_db 分離的資料庫。附各步驟執行輸出截圖。
-- 1. 查詢檔案
EXEC sp_helpdb mytest;
-- 2. 分離 (skipchecks=true 跳過 UPDATE STATISTICS 加速)
EXEC sp_detach_db 'mytest', true;
-- 輸出: Successfully detached database 'mytest'.
-- 3. OS 層級移動 .mdf/.ldf 至新目錄
-- 4. 附加 (最多 16 檔案,需含主資料檔)
EXEC sp_attach_db @dbname = 'mytest',
@filename1 = 'e:\sql data\mytest_data.mdf',
@filename2 = 'e:\sql data\mytest_log.ldf';
-- 輸出: Successfully attached database 'mytest'.

sp_change_users_login)。CREATE DATABASE mytest ON (FILENAME='...'), (FILENAME='...') FOR ATTACH;| 方法 | 適用場景 | 停機時間 |
|---|---|---|
| 分離/附加 | 同伺服器磁碟調整、同版本同排序規則移動 | 全程離線 |
| 備份/還原 | 跨伺服器/跨版本/生產遷移/最小化停機 (記錄備份) | 可控 (記錄備份階段極短) |
| 複製資料庫精靈 | 線上遷移、含作業/登入/連結伺服器同步 | 極短 (最終切換) |