[鐵人賽][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) ;
(擷取部分)。
2.Using 系統 sp_describe_first_result_set
exec sp_describe_first_result_set @tsql = N'SELECT * FROM A'
(擷取部分)。
查看特定資料表欄位資訊: 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'
(擷取部分)
2.Using 系統SP_Help
--查看資料表A 相關欄位資訊
sp_help 'dbo.A'
(擷取部分)