中繼資料為「關於資料的資料」,在關聯式 DBMS 中描述資料結構與語意。常見需求:資料表/檢視清單、欄位定義、約束、索引、主鍵/外來鍵資訊。
提供抽象層,避免直接查詢系統資料表。常用程序:
| 預存程序 | 用途 |
|---|---|
| sp_columns | 傳回指定資料表/檢視的欄位詳細資訊 |
| sp_databases | 傳回目前伺服器所有資料庫基本資訊 |
| sp_fkeys | 傳回參考指定主鍵資料表的外來鍵資料表,或指定外來鍵資料表關聯的主鍵資料表 |
| sp_pkeys | 傳回指定資料表的主鍵資訊 |
| sp_server_info | 傳回伺服器特性與設定值 |
| sp_sproc_columns | 傳回預存程序輸入/輸出參數資訊 |
| sp_statistics | 傳回資料表/索引檢視的索引與統計資訊 |
| sp_stored_procedures | 傳回目前資料庫預存程序清單 (含系統程序) |
| sp_tables | 傳回目前資料庫所有資料表/檢視 (含系統表) |
限制:無法直接在 T-SQL 運算式中使用回傳結果,需透過暫存表或游標轉存後再處理。
可直接在 SELECT/WHERE 子句中使用,靈活度高。常用函數:
| 函數 | 用途 |
|---|---|
| COLUMNPROPERTY | 傳回欄位/參數屬性 (是否允許 NULL、是否計算欄位等) |
| COL_LENGTH | 傳回欄位定義長度 |
| DATABASEPROPERTYEX | 傳回資料庫選項/屬性目前設定 (狀態、復原模式等) |
| OBJECT_ID | 傳回物件識別碼 |
| OBJECT_NAME | 由識別碼取得物件名稱 |
| OBJECTPROPERTY | 傳回物件屬性 (是否資料表、是否約束等) |
| fn_listextendedproperty | 傳回擴充屬性值 (描述、格式規則、輸入遮罩等) |
提供標準化、唯讀的結構描述檢視,支援跨平台移植。主要檢視:
INFORMATION_SCHEMA.TABLES、COLUMNS、COLUMN_DOMAIN_USAGEINFORMATION_SCHEMA.TABLE_CONSTRAINTS、CONSTRAINT_COLUMN_USAGE、REFERENTIAL_CONSTRAINTSINFORMATION_SCHEMA.VIEWS、VIEW_COLUMN_USAGE、VIEW_TABLE_USAGEINFORMATION_SCHEMA.ROUTINES、ROUTINE_COLUMNS、PARAMETERSCREATE TABLE #sp_result (
DATABASE_NAME sysname,
DATABASE_SIZE int,
REMARKS varchar(254) NULL
)
INSERT INTO #sp_result EXEC ('sp_databases')
SELECT * FROM #sp_result
DROP TABLE #sp_result