2009年4月25日 星期六

取得MS SQL中資料欄位的描述內容

用ado.net的connection.GetSchema取得資料表結構算是蠻方便的.
但差的一點就是取不到欄位的說明.
因為又要開始寫文件了.而之前寫的SchemaGen不能支援MS SQL 2005.
所以現在正在著手寫SchemaGen 2005版.
另外也練習使用所謂的design pattern來進行...
至於用哪個...先試試看再說...

回到主題.
之前其實有寫過相關的主題.
不過當初主要是說明用T-SQL維護欄位的描述.
現在再針對::fn_listextendedproperty加一些說明

如果要針對某個資料表的某個欄位取得
可以使用下面的語法

select value from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', N'資料表名稱', 'column', N'欄位名稱')

如果要取得某個資料表中所有欄位說明的話,可以使用

select * from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', N'資料表名稱', 'column',NULL)

另外.如果你的資料表也有設定說明的話,
可以使用下面的語法取得資料表的說明

select * from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', N'資料表名稱',NULL,NULL)

當然.要取的所有資料表的說明就是用下面這個

select * from ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table',NULL,NULL,NULL)

另外,上面的參數中有使用NULL的,也可以改用default.意義應該是相同的.例如

select * from ::fn_listextendedproperty(default, 'user', 'dbo', 'table',default,default,default)

而修改或是新增欄位或是資料表說明的話,
可以參考上次寫的T-SQL維護欄位的描述,
使用sp_addextendedproperty及sp_updateextendedproperty來處理

相關連結 :
fn_listextendedproperty (Transact-SQL)
http://msdn2.microsoft.com/en-us/library/ms179853.aspx

sp_addextendedproperty (Transact-SQL)
http://msdn2.microsoft.com/en-us/library/ms180047.aspx

sp_updateextendedproperty (Transact-SQL)
http://technet.microsoft.com/zh-tw/library/ms186885.aspx

沒有留言:

張貼留言