Recuperar banco de dados MS SQL ou estrutura de tabela em XML

3

Existe uma maneira de exportar o esquema do banco de dados em XML bem formado de um MS 2000 SQL Server. Eu estou procurando apenas a estrutura não os dados e quanto mais detalhado melhor. O XML pode ser usado em um processo de migração. Eu estou mais familiarizado com o MySQL do que com o SQL Server, então, por favor, seja detalhado se você tiver tempo.

Obrigado

    
por Clutch 18.03.2010 / 22:35

3 respostas

2

Que tal usar as vistas do esquema de informações ou os sistemas subjacentes tabelas como sysobjects , syscolumns e, em seguida, usando a cláusula FOR XML para cuspir alguns xml. Aqui está uma coisa para você começar:

 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
    
por 19.03.2010 / 00:51
0

Só para mostrar que é possível, não posso dizer como criar código que o fará, mas com algum software criado por meu amigo, o esquema .xml é parecido com isso. Talvez isso possa ajudar você a criar seu próprio código?

  <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>

E o arquivo de dados é assim:

Users.dat

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
    
por 18.03.2010 / 23:37
0

Eu escrevi um aplicativo ( dbscript ) que gera uma representação XML de um esquema de banco de dados (ou objetos de esquema único ) após importar o esquema de um banco de dados ou fazer o upload de um arquivo DDL SQL.

    
por 22.03.2010 / 23:18