需求:現有資料庫 DOE 已含大量資料,需從另一個備份檔 A1.bak (非 DOE 備份) 匯入特定資料表與資料,**且不覆蓋 DOE 原有資料**。直接還原會覆蓋整個資料庫,因此需採用「還原至臨時資料庫 → 匯入目標資料庫」二階段策略。
A1_Temp。A1_Temp → 「所有工作」 → 「還原資料庫」。A1.bak → 確定。C:\A1_Temp_Data.mdf (資料檔)C:\A1_Temp_Log.ldf (記錄檔)A1_Temp 即包含備份檔完整結構與資料。DOE 資料庫 → 「所有工作」 → 「匯入資料」啟動 DTS 精靈。A1_Temp。DOE (目前資料庫)。驗證 DOE 新增資料表與筆數正確後,右鍵刪除臨時資料庫 A1_Temp 釋放空間。
-- 1. 還原備份至臨時資料庫
RESTORE DATABASE A1_Temp
FROM DISK = 'C:\Backups\A1.bak'
WITH MOVE 'A1_Data' TO 'C:\Data\A1_Temp.mdf',
MOVE 'A1_Log' TO 'C:\Data\A1_Temp.ldf',
REPLACE, STATS=10;
-- 2. 動態產生 INSERT INTO ... SELECT * FROM OPENROWSET 腳本匯入指定表
-- (略,建議用 SSIS 套件或 sqlcmd + bcp 處理大量資料)
-- 3. 清理
DROP DATABASE A1_Temp;
WITH MOVE 必須指定目標實例可存取的磁碟路徑,避免預設路徑衝突。bcp、BULK INSERT 或 SSIS,效能遠優於 DTS 精靈。sp_change_users_login 'Auto_Fix', 'user' 修復孤立使用者。