邏輯名稱是指:SQL Server 對資料檔案與記錄檔的「內部識別名稱」,用來讓系統知道你要操作的是哪一個檔案。
項目 說明
每個檔案都需要 .mdf、.ndf、.ldf 每一個檔案都要指定 NAME = xxx
資料庫內唯一 同一個資料庫中, 邏輯名稱不能重複
與實體檔案分離 跟實際磁碟上的檔名(FILENAME)可以不同
系統用它來辨識檔案 SQL Server 的 ALTER DATABASE, DBCC, BACKUP 等指令都是根據邏輯名稱執行
可用 sys.database_files 查詢 系統儲存在資料表中供管理用
CREATE DATABASE MyDB
ON PRIMARY
( NAME = MyDB_Data1, -- 邏輯名稱
FILENAME = 'D:\DB\MyDB_Data1.mdf'),
( NAME = MyDB_Data2, -- 第二個資料檔
FILENAME = 'D:\DB\MyDB_Data2.ndf')
LOG ON
( NAME = MyDB_Log1, -- 記錄檔邏輯名稱
FILENAME = 'D:\DBLog\MyDB_Log1.ldf');
即使 .mdf 檔名都叫一樣,你也可以給邏輯名稱不同,以便在 SQL 裡管理。
例如:
TestDB_Pri1, TestDB_Pri2(PRIMARY 資料檔)
TestDB_FG1_1, TestDB_FG2_2(FG1 群組的第 1 檔案)
TestDB_Log1, TestDB_Log2
這樣一看就知道:
哪個資料庫
是主檔或副檔
哪個檔案群組
第幾個檔案
2. 與實體檔案一致更好管理(非必須)
建議命名時:
邏輯名稱 ≈ 檔案名稱(不強制)
例如 NAME = TestDB_FG1_1, FILENAME = 'D:\DB\TestDB_FG1_1.ndf'
這樣在維運或備份時更容易對照。
可以採用命名模板,如:
[DatabaseName]_[FileGroupName]_[Type]_[Index]
範例:
SalesDB_PRIM_DATA_01
SalesDB_History_FG2_02
SalesDB_LOG_01
指令 用途
ALTER DATABASE MODIFY FILE (NAME = ...) 修改檔案大小、MAXSIZE、路徑
DBCC SHRINKFILE (name, EMPTYFILE) 清空檔案內容
RESTORE DATABASE ... MOVE 'logical_name' TO 'new_path' 備份還原時指定檔案搬移路徑
BACKUP DATABASE ... 檢查檔案清單用
SELECT name AS logical_name, physical_name, type_desc
FROM sys.database_files;
邏輯名稱是系統層級識別的關鍵,命名規則一致,將來在備份、還原、搬移、縮檔、設定大小時都會更簡潔有效。