2010-04-05 2 views
0

можно получить с помощью connection.getschema() элемента описания из столбца таблицы sql-сервера, так же, как можно получить имя столбца, тип данных, является нулевым, столбец значение по умолчанию и т. д.? если да, то как?Извлечение элемента описания из столбца таблицы 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(), и я пытался захватить описание с него. Поскольку, перейдя по строкам данных, я могу получить информацию о имени столбца, типе данных и т. Д. Я полагаю, что описание должно быть там тоже, но я не могу найти, где – Pablo

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 

редактирование: фиксированного запрос :-)

НТН

+0

В SQL Server 2005 я получаю «Msg 208, Level 16, State 1, Line 1 Недопустимое имя объекта« sysproperties ». –

+0

+1 Это именно то, что я искал. Я использовал один и тот же запрос с одним исключением: я добавил «AND s.value IS NOT NULL» в предложение where, чтобы возвращать только столбцы с ненулевым описанием. – jlafay

0

Если у вас уже есть DataTable, как вы упомянули - посмотрите на его столбцы данных!

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

Имеет ли это то, что вам нужно?

+0

да, у меня уже есть цикл, и я захватываю другие свойства в столбце данных, такие как «IS_NULLABLE», «COLUMN_NAME», «DATA_TYPE» и т. д., но я не могу найти, как захватить описание столбца. Я использую инспектора объектов, чтобы увидеть свойства/методы datacolumn, но я не могу найти, как захватить эту конкретную информацию с инспектором объектов. – Pablo

+0

это похоже на ту же проблему, что у меня есть http://www.bigresource.com/MS_SQL-GetSchema-not-returning-description-of-table-or-column-GSfX9tHx.html – Pablo

Смежные вопросы