取得、新增、更新MS SQL中資料欄位的描述內容

使用TSQL語法從資料庫取出資料表、欄位描述、新增與更新描述

上一篇文章MS SQL Server Schema 編輯、匯出Excel (For MS SQL 2000 & 2005)
程式碼的部分有參考了孤影大大的取得MS SQL中資料欄位的描述內容

使用在2005時有查了一些資料,這邊也將孤影大大的文章引用出來做點補充

底下的所有的'user' 可以使用於SQL2000SQL2005
SQL2008後改用 'schema' (SQL2005也可以使用)

 
新增或修改資料表說明
IF not exists(SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '資料表名稱', NULL, NULL))  
           BEGIN  
            exec sp_addextendedproperty 'MS_Description', '資料表說明', 'user', 'dbo', 'table', '資料表名稱'
           END  
ELSE
           BEGIN  
            exec sp_updateextendedproperty 'MS_Description', '資料表說明', 'user', 'dbo', 'table', '資料表名稱'
           END
 
 
新增或修改欄位說明
IF not exists(SELECT * FROM ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', '資料表名稱', 'column', '欄位名稱'))
           BEGIN  
            exec sp_addextendedproperty 'MS_Description', '欄位說明', 'user', 'dbo', 'table', '資料表名稱', 'column', '欄位名稱'
           END  
ELSE
           BEGIN  
            exec sp_updateextendedproperty 'MS_Description', '欄位說明', 'user', 'dbo', 'table', '資料表名稱', 'column', '欄位名稱'
           END
 
 
::fn_listextendedproperty用法
取得資料表單一欄位說明
SELECT value FROM ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', '資料表名稱', 'column', '欄位名稱')
 
取得資料表所有欄位說明
SELECT * FROM ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', '資料表名稱', 'column', NULL)
 
取得資料表說明
SELECT * FROM ::fn_listextendedproperty(NULL, 'user', 'dbo', 'table', '資料表名稱', 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)


參考MSDN
http://msdn.microsoft.com/zh-tw/library/ms179853.aspx