當擁有資料庫的實體檔案 (.mdf 主資料檔、.ldf 記錄檔) 時,可使用 sp_attach_db 系統預存程序快速將其附加為線上資料庫。
USE master;
GO
EXEC sp_attach_db
@dbname = N'資料庫名稱',
@filename1 = N'完整路徑\資料庫.mdf',
@filename2 = N'完整路徑\資料庫_log.ldf';
GO
USE master;
GO
EXEC sp_attach_db
@dbname = N'db_shop',
@filename1 = N'E:\TM\07\Database\db_shop_Data.MDF',
@filename2 = N'E:\TM\07\Database\db_shop_Log.LDF';
GO
| 情境 | 解決方案 |
|---|---|
| 只有 .mdf,無 .ldf | 使用 sp_attach_single_file_db,SQL Server 自動重建記錄檔 |
| 檔案路徑含空白/特殊字元 | 路徑必須用 N'...' 包裹,確保 Unicode 路徑正確 |
| 相容性升級 | 附加舊版 (如 2000/2005) 資料庫至新版實例會自動升級,不可逆 |
| 權限不足 | 執行帳戶需為 sysadmin 固定伺服器角色成員 |
CREATE DATABASE db_shop
ON (FILENAME = N'E:\TM\07\Database\db_shop_Data.MDF'),
(FILENAME = N'E:\TM\07\Database\db_shop_Log.LDF')
FOR ATTACH;
GO
此語法為 SQL Server 2005+ 標準寫法,功能等同 sp_attach_db,未來版本相容性更佳。