[鐵人賽][Denali 新特性探險11]Metadata Discovery

[鐵人賽][Denali 新特性探險11]Metadata Discovery

以前當我想要知道某個 Table 相關欄位資訊(Metadata),如Length、定序、is nullable、小數位…等,

我可能會透過 sys.tables join sys.all_columns或 sp_help 來取得我想要的欄位資訊,

或許你可能會覺得奇怪,為什麼不在 SSMS 針對該資料表展開資料行節點就好呢?

當然,如果資料表欄位數量很少是可以怎麼做的,

但如果一個資料表欄位數量高達200個以上(不誇張,我有客戶資料庫環境中真的存在這樣的資料表),

那使用SSMS查看欄位資訊真的慢到有點抓狂,現在 Denali 讓你有更好的方法(寫法更簡單且更有效率),

而且返回欄位資訊更齊全且詳細,下面我就來介紹並操作一番。

 

查看特定資料表欄位資訊: Denali寫法

1.Using sys.dm_exec_describe_first_result_set

SELECT * FROM sys.dm_exec_describe_first_result_set
(N'SELECT * FROM A', null, 0) ;

image

(擷取部分)。

 

2.Using 系統 sp_describe_first_result_set

exec sp_describe_first_result_set @tsql = N'SELECT * FROM A'

image

(擷取部分)。

 

查看特定資料表欄位資訊: SQL2005/2008寫法

1.Using sys.tables and sys.all_columns


	
--查看資料表 A 相關欄位資訊
select t1.name as 'TableName',t2.name as 'ColumnName',t2.collation_name,t2.max_length,t2.precision,t2.scale 
from sys.tables t1 join sys.all_columns t2
on t1.object_id=t2.object_id
and OBJECT_NAME(t1.object_id)='A'

image

(擷取部分)

 

2.Using 系統SP_Help

--查看資料表A 相關欄位資訊

	
sp_help 'dbo.A'

image

(擷取部分)

 

參考 Programmability Enhancements