僅擁有資料檔(.mdf),遺失記錄檔(.ldf),需快速掛載資料庫。常見於:備份遺漏記錄檔、記錄檔損壞無法修復、跨環境遷移僅複製 MDF。
CREATE DATABASE [Test] ON PRIMARY
(NAME = N'Test', FILENAME = N'D:\Data\Test.mdf', SIZE = 10MB, FILEGROWTH = 10MB)
LOG ON
(NAME = N'Test_log', FILENAME = N'D:\Log\Test_log.ldf', SIZE = 5MB, FILEGROWTH = 5MB);
ALTER DATABASE [Test] SET OFFLINE WITH ROLLBACK IMMEDIATE;
sysadmin 權限):
EXEC sp_attach_single_file_db @dbname = 'Test',
@physname = 'D:\Data\Test.mdf';
SQL Server 會自動在資料檔同目錄下建立新的記錄檔(約 1-2 MB),資料庫進入復原模式並完成啟動。
ALTER DATABASE [Test] SET ONLINE;
SELECT * FROM [Test].sys.objects WHERE type = 'U'; -- 確認表格存在
CREATE DATABASE ... FOR ATTACH_REBUILD_LOG,語法更清晰且支援指定新記錄檔路徑。| 方法 | 優點 | 缺點 |
|---|---|---|
| sp_attach_single_file_db | 指令簡單、相容舊版 | 已棄用、無法指定記錄檔路徑 |
| CREATE DATABASE FOR ATTACH_REBUILD_LOG | 支援自訂記錄檔路徑、官方推薦 | 需 SQL Server 2016+ |
| 第三方工具(如 ApexSQL Recover) | 可嘗試救援部分損壞頁面 | 收費、耗時 |
DBCC CHECKDB 或還原備份。