在擁有數百個資料庫、數十個實例的企業環境中,DBA 面臨的共同困境:DB_FIN_001、CRM_PROD_V2、ERP_2018_Q3……命名規範五花八門,非技術人員 (IT 經理、稽核、業務主管) 完全無法對應至實際業務系統 (如「財務總帳」、「客服 CRM」、「供應鏈 ERP」)。計畫性停機通知、異動影響分析、資產盤點皆因此受阻。
參考 Rodney Landrum (SQL Server Magazine 2007-2008) 的 SSIS 架構,並針對「資料庫-應用程式映射」缺口擴充兩張核心表,建立一個功能完備、維護成本低的中繼資料中樞。
CREATE TABLE [dbo].[Applications] (
[AppID] INT IDENTITY(154,1) NOT NULL PRIMARY KEY,
[ApplicationName] VARCHAR(100) NOT NULL UNIQUE
);
CREATE TABLE [dbo].[Database_Applications] (
[DB_AppID] INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
[ServerName] VARCHAR(50) NOT NULL,
[DatabaseName] VARCHAR(100) NOT NULL,
[ApplicationName] VARCHAR(100) NULL, -- 故意非正規化,存名稱而非 FK
CONSTRAINT UQ_Server_DB UNIQUE (ServerName, DatabaseName)
);
| 考量面向 | 正規化 (FK 關聯 Applications) | 非正規化 (直存 ApplicationName) ⭐ 採用 |
|---|---|---|
| 資料量 | 800 DB / 80 Instance → 記錄極少 | 同樣極少,無儲存壓力 |
Database_Applications 保留人工維護的映射關係,避免每日重載遺失業務對應。ApplicationName 為 NULL (尚未歸檔的新資料庫),支援增發現流程。sys.databases、sys.servers、備份歷史、作業歷史等。Database_Applications 僅更新 ServerName/DatabaseName 欄位,保留既有 ApplicationName。ApplicationName。ApplicationName 發送給對應業務主管,不再抄送全體 IT。Environment (PROD/UAT/DEV)、Criticality (P1/P2/P3)、DataOwner、RecoveryModel 等治理屬性。sys.dm_db_index_usage_stats 監控閒置資料庫,輔助去委決策。