Есть ли способ экспортировать схему базы данных в хорошо сформированный XML MS 2000 SQL Server. Я ищу только структуру, а не данные, и чем подробнее, тем лучше. XML может использоваться в процессах миграции. Я больше знаком с MySQL, чем с SQL Server, поэтому, если у вас есть время, расскажите подробнее.
Спасибо
Как насчет использования представления информационной схемы или базовые системные таблицы, такие как sysobjects, syscolumns а затем с помощью предложения FOR XML выплюнуть некоторый xml. Вот что вам нужно для начала:
SELECT o.name as table_name
,c.name as column_name
,t.name as column_type
,t.length as column_length from sysobjects o
inner join syscolumns c on o.id=c.id
inner join systypes t on c.xtype=t.xtype
where o.xtype='u'
FOR XML RAW
Чтобы показать, что это возможно, я не могу рассказать вам, как создать код, который будет делать это, но с некоторым программным обеспечением, созданным моим другом, схема .xml выглядит примерно так. Может быть, это поможет вам начать создавать собственный код?
<table enabled="true" name="Users">
<field name="i_user_id" size="10" type="INTEGER"/>
<field name="c_user_login" size="32" type="VARCHAR"/>
<field name="c_user_pwd" size="32" type="VARCHAR"/>
<field name="c_user_session" size="40" type="VARCHAR"/>
<field name="c_user_name" size="200" type="VARCHAR"/>
<field name="d_stamp_" size="19" type="DATETIME"/>
<index name="Users2CID_0" unique="true" using="OTHER">
<field direction="ASCENDING" name="i_user_id" ordinal="1"/>
</index>
<index name="Users2_1_idx" unique="false" using="OTHER">
<field direction="ASCENDING" name="c_user_login" ordinal="1"/>
</index>
<index name="Users2_3_idx" unique="false" using="OTHER">
<field direction="ASCENDING" name="c_user_session" ordinal="1"/>
</index>
<index name="Users2_4_idx" unique="false" using="OTHER">
<field direction="ASCENDING" name="c_user_name" ordinal="1"/>
</index>
<index name="Users2_8_idx" unique="false" using="OTHER">
<field direction="ASCENDING" name="c_flag_" ordinal="1"/>
</index>
<index name="Users2_9_idx" unique="false" using="OTHER">
<field direction="ASCENDING" name="d_stamp_" ordinal="1"/>
</index>
</table>
И тогда файл данных выглядит так:
i_user_id ( ,10,INTEGER,true,true,true) c_user_login ( ,32,VARCHAR,true,true,true) c_user_pwd ( ,32,VARCHAR,true,true,true) c_user_session ( ,40,VARCHAR,true,true,true) c_user_name ( ,200,VARCHAR,true,true,true) d_stamp_ ( ,19,DATETIME,true,true,true)
1 CUSER Null -1 CUser 2010-02-16 23:06:38.0
2 admin X032343fZdYdgrtueuILPmQ== -1 Admin User 2009-12-03 00:13:30.0
Я написал заявку (dbscript), который генерирует XML-представление схемы базы данных (или отдельных объектов схемы) после импорта схемы из базы данных или загрузки файла SQL DDL.