首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 存取中繼資料三大方法:系統存儲程序、系統函數與資訊結構描述檢視

     編輯:關於SqlServer

中繼資料簡介

中繼資料為「關於資料的資料」,在關聯式 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 檢視 (ANSI 標準)

提供標準化、唯讀的結構描述檢視,支援跨平台移植。主要檢視:

  • INFORMATION_SCHEMA.TABLES、COLUMNS、COLUMN_DOMAIN_USAGE
  • INFORMATION_SCHEMA.TABLE_CONSTRAINTS、CONSTRAINT_COLUMN_USAGE、REFERENTIAL_CONSTRAINTS
  • INFORMATION_SCHEMA.VIEWS、VIEW_COLUMN_USAGE、VIEW_TABLE_USAGE
  • INFORMATION_SCHEMA.ROUTINES、ROUTINE_COLUMNS、PARAMETERS

範例:取得所有資料庫基本資訊並存入暫存表

CREATE 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

選擇建議

  • 快速互動查詢:系統預存程序最便利。
  • 程式碼中嵌入邏輯判斷:系統函數或 INFORMATION_SCHEMA 檢視。
  • 跨資料庫平台相容性:優先使用 INFORMATION_SCHEMA。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved