以 XML 格式检索 MS SQL 数据库或表结构

以 XML 格式检索 MS SQL 数据库或表结构

有没有办法将 MS 2000 SQL Server 的数据库架构导出为格式良好的 XML。我只想要结构而不是数据,越详细越好。XML 可用于迁移过程。我对 MySQL 比对 SQL Server 更熟悉,所以如果您有时间,请详细说明。

谢谢

答案1

如何使用信息模式视图或者底层系统表系统对象系统列然后使用 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

答案2

为了证明这是可能的,我无法告诉您如何创建代码来实现这一点,但是使用我朋友制作的一些软件,架构 .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

答案3

我写了一个申请(数据库脚本) 从数据库导入模式或者上传 SQL DDL 文件后,生成数据库模式(或单个模式对象)的 XML 表示。

相关内容