>>
и <<
являются просто операторами, и вы можете реализовать свои собственные >>
и <<
для своих классов.
Я полагаю, «кто-то» выбрал их, потому что: а) они похожи на операции с файлами оболочки и б) повторно использовать существующие операторы, потому что нет необходимости создавать новые
Чтобы получить данные описания, вам, к сожалению, придется использовать sysobjects / syscolumns для получения идентификаторов:
SELECT u.name + '.' + t.name AS [table],
td.value AS [table_desc],
c.name AS [column],
cd.value AS [column_desc]
FROM sysobjects t
INNER JOIN sysusers u
ON u.uid = t.uid
LEFT OUTER JOIN sys.extended_properties td
ON td.major_id = t.id
AND td.minor_id = 0
AND td.name = 'MS_Description'
INNER JOIN syscolumns c
ON c.id = t.id
LEFT OUTER JOIN sys.extended_properties cd
ON cd.major_id = c.id
AND cd.minor_id = c.colid
AND cd.name = 'MS_Description'
WHERE t.type = 'u'
ORDER BY t.name, c.colorder
Вы можете сделать это с помощью информационной схемы, но вам придется объединить и т. Д., Чтобы вызовите OBJECT_ID () - так в чем будет смысл?
Generic information about tables and columns can be found in these tables:
select * from INFORMATION_SCHEMA.TABLES
select * from INFORMATION_SCHEMA.COLUMNS
The table description is an extended property, you can query them from sys.extended_properties:
select
TableName = tbl.table_schema + '.' + tbl.table_name,
TableDescription = prop.value,
ColumnName = col.column_name,
ColumnDataType = col.data_type
FROM information_schema.tables tbl
INNER JOIN information_schema.columns col
ON col.table_name = tbl.table_name
AND col.table_schema = tbl.table_schema
LEFT JOIN sys.extended_properties prop
ON prop.major_id = object_id(tbl.table_schema + '.' + tbl.table_name)
AND prop.minor_id = 0
AND prop.name = 'MS_Description'
WHERE tbl.table_type = 'base table'