我需要从SQL Server 2012获取字段描述。
此查询没问题
SELECT
Discription_Table.value
FROM
sys.extended_properties as Discription_Table,
information_schema.COLUMNS as Column_Table
WHERE
Column_Table.TABLE_NAME = 'Users'
AND Column_Table.ORDINAL_POSITION = Discription_Table.minor_id
AND Column_Table.COLUMN_NAME = 'Login'
但是如果表格用户中的一个列在进行描述后被删除则不再有效。
原因 ORDINAL_POSITION 不再是 minor_id 。
我该如何解决? Management Studio不得不解决这个问题。
我的解决方案:我需要使用其他表格。
也许我是一个习惯"和#34;旧学校",但对我来说,这个解决方案更清晰,更具可读性。
SELECT extended_properties.value
FROM sys.schemas,sys.tables,sys.columns,sys.extended_properties
WHERE
schemas.schema_id = tables.schema_id
and tables.object_id = columns.object_id
and tables.object_id = extended_properties.major_id
AND columns.column_id = extended_properties.minor_id
And tables.name='Users'
And columns.name='Access_Key'
谢谢大家。
答案 0 :(得分:1)
我相信你是在fn_listextendedproperty
示例:获取表dbo.MyTable
SELECT objtype, objname, name, value FROM
fn_listextendedproperty(NULL, 'schema', 'dbo', 'table', 'MyTable', 'column', NULL)
(去挖掘并添加MSDN链接我确定在某处,稍后会在那里) MSDN docs here
要仅获取特定列的数据,请将最后一个NULL
替换为其名称(不存在的列将以空结果集结束,不会出现错误)。
答案 1 :(得分:0)
请尝试以下查询以获取列的扩展属性:
SELECT objtype, objname, name, value
FROM fn_listextendedproperty(NULL, 'schema', '<Schema>', 'table', 'Users', 'column', 'Login')
使用表格的模式名称