Как получить XML-схему структуры БД

Проблема следующая: есть БД (sql server 2005) около 300 таблиц с данными. Нужно получить схему, описывающую структуру этой БД в формате XML.
О XML/SQL слышал, но нашел только такой путь:
SELECT TOP 0 * from Список_Таблиц for xml auto, xmldata
Но боюсь, что сначала выполнится «перемножение» таблиц, которое убьёт сервер.
Подскажите куда копать.
  • Вопрос задан
  • 3089 просмотров
Пригласить эксперта
Ответы на вопрос 1
dbmaster
@dbmaster
Вы на верном пути — попробуйте код снизу. На производительность сервера не повлияет.

select sch.name as schema_name,tab.name as table_name,col.name as column_name,
systyp.name as type_name, typ.is_user_defined, typ.name as user_type,
col.max_length, col.precision, col.scale, col.collation_name, col.is_nullable as nullable,
col.is_identity,col.is_computed,cc.definition as computedExpression, col.is_rowguidcol,
def.definition as defaultValue, cast(ep.value as varchar(7500)) as comment
from sys.columns as col
inner join sys.tables as tab on col.object_id=tab.object_id
inner join sys.schemas as sch on tab.schema_id = sch.schema_id
inner join sys.types as typ on col.user_type_id= typ.user_type_id
inner join sys.types as systyp on col.system_type_id = systyp.system_type_id
and systyp.is_user_defined=0 and systyp.user_type_id = systyp.system_type_id
left join sys.default_constraints as def on col.default_object_id = def.object_id
left join sys.extended_properties as ep on ep.major_id=tab.object_id
and ep.minor_id=col.column_id and ep.class='1' and ep.class_desc='OBJECT_OR_COLUMN'
and ep.name='MS_Description'
left join sys.computed_columns as cc on tab.object_id=cc.object_id and col.column_id = cc.column_id
FOR XML PATH('column'), ROOT('datadictionary')--, ELEMENT
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы