2010-04-05 51 views
0

是否可以通過使用connection.getschema()從sql server表列中檢索描述項,就像檢索列名,數據類型可爲空,列一樣默認值等?如果是這樣,怎麼樣?檢索來自sql server表列的描述項

回答

1

上的SQL Server 2005中,你可以使用這個系統表值函數:

fn_listextendedproperty (Transact-SQL)

或嘗試查詢from from this article,像這樣:

SELECT 
    [Table Name] = OBJECT_NAME(c.object_id), 
    [Column Name] = c.name, 
    [Description] = ex.value 
FROM 
    sys.columns c 
LEFT OUTER JOIN 
    sys.extended_properties ex 
ON 
    ex.major_id = c.object_id 
    AND ex.minor_id = c.column_id 
    AND ex.name = 'MS_Description' 
WHERE 
    OBJECTPROPERTY(c.object_id, 'IsMsShipped')=0 
    -- AND OBJECT_NAME(c.object_id) = 'your_table' 
ORDER 
    BY OBJECT_NAME(c.object_id), c.column_id 
+0

謝謝,但我已經有一個datatable由connection.GetSchema()返回,我試圖從它抓取描述信息。由於通過DataTable的行循環,我可以得到列名,數據類型等的信息,我想說明應該是有過,但我不能找到地方 – Pablo 2010-04-05 18:20:30

2

試試這個:

SELECT 
    [Table Name] = i_s.TABLE_NAME, 
    [Column Name] = i_s.COLUMN_NAME, 
    [Description] = s.value 
FROM 
    INFORMATION_SCHEMA.COLUMNS i_s 
LEFT OUTER JOIN 
    sys.extended_properties s 
ON 
    s.major_id = OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME) 
    AND s.minor_id = i_s.ORDINAL_POSITION 
    AND s.name = 'MS_Description' 
WHERE 
    OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA+'.'+i_s.TABLE_NAME), 'IsMsShipped')=0 
    --AND i_s.TABLE_NAME = 'table_name' 
ORDER BY 
    i_s.TABLE_NAME, i_s.ORDINAL_POSITION 

編輯:固定的查詢:-)

HTH

+0

在SQL Server 2005上,我收到了消息208,級別16,狀態1,行1無效的對象名'sysproperties'。' – 2010-04-05 18:12:44

+0

+1,這正是我正在尋找的。我使用了相同的查詢,但有一個例外:我在where子句中添加了「AND s.value IS NOT NULL」,只返回非空描述的列。 – jlafay 2012-11-01 14:16:10

0

如果你已經有了DataTable,就像你提到的那樣 - 查看它的數據列!

foreach(DataColumn col in dataTable.Columns) 
{ 
    // check out all the properties on the DataColumn 
} 

這是否包含你所需要的?

+0

是的,我已經在循環做和Im抓數據列中的其他屬性,如「IS_NULLABLE」,「COLUMN_NAME」,「DATA_TYPE」等,但我無法找到如何獲取列的描述。我使用對象檢查器來查看datacolumn的屬性/方法,但我無法找到如何使用對象檢查器來獲取特定信息。 – Pablo 2010-04-06 11:24:23

+0

這似乎是我有同樣的問題http://www.bigresource.com/MS_SQL-GetSchema-not-returning-description-of-table-or-column-GSfX9tHx.html – Pablo 2010-04-06 11:40:43