如何将数据库模式提取为xml内容?

如何将数据库模式提取为xml内容?,xml,database,schema,Xml,Database,Schema,我需要将数据库模式提取为xml内容 是否有任何开源工具或库可以执行模式提取操作 是否有任何过程可用于将DB模式生成为xml内容 例如: create table sample(id numeric(5) primary key) <Tables> <Table Name="sample" Type="Table"> <Column Name="id" DataType="numeric" IsNullable="NO" IsIdentity="0" C

我需要将数据库模式提取为xml内容

是否有任何开源工具或库可以执行模式提取操作

是否有任何过程可用于将DB模式生成为xml内容

例如:

create table sample(id numeric(5) primary key)

<Tables>
  <Table Name="sample" Type="Table">
    <Column Name="id" DataType="numeric" IsNullable="NO" IsIdentity="0" Constraint="PRIMARY KEY" />
  </Table>
</Tables>
创建表示例(id数字(5)主键)
下面的问题在回答中提到了同样的问题,我需要
实现索引、过程……

工具建议是离题的。或者是否有任何过程可用于生成xml内容的DB模式@埃尔文·斯穆特:是的。阅读目录,写一个XML。要点是:对这个问题的批评是它“太宽泛了”。您甚至还没有指定数据库是由SQL还是其他方式管理。您还没有指定所需的XML结构(即no.xsd)。我对基于DB模式生成XML内容表示怀疑。它会将模式显示为xml内容吗?我有个错误,你能详细说明你有什么错误吗?是的,这将生成DB schemaMsg 512的XML内容,级别16,状态1,第1行子查询返回的值超过1。当子查询在=、!=、=或者当子查询用作表达式时。我得到的这个错误是,如果一个DB只包含一个表,它会以XML的形式生成,这和我们使用索引和过程的方式是一样的,对吗?
SELECT TABLE_NAME AS '@Name', CASE WHEN TABLE_TYPE = 'BASE TABLE' THEN 'Table' ELSE 'View' END AS '@Type',
(
    SELECT Column_Name as '@Name',
            DATA_TYPE as '@DataType',
            case data_type 
                when 'nvarchar' 
                then CHARACTER_MAXIMUM_LENGTH 
                when 'varchar'  
                then CHARACTER_MAXIMUM_LENGTH
                else null 
            end  as '@Length',
            IS_NULLABLE AS '@IsNullable',
            COLUMNPROPERTY(OBJECT_ID(TABLE_NAME), COLUMN_NAME, 'IsIdentity') AS '@IsIdentity',

(SELECT tc.CONSTRAINT_TYPE FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE cu ON tc.CONSTRAINT_NAME = cu.CONSTRAINT_NAME
WHERE tc.TABLE_NAME = INFORMATION_SCHEMA.COLUMNS.TABLE_NAME AND cu.COLUMN_NAME = INFORMATION_SCHEMA.COLUMNS.Column_Name) AS '@Constraint'
FROM INFORMATION_SCHEMA.COLUMNS 
    where INFORMATION_SCHEMA.COLUMNS.TABLE_NAME = 
        INFORMATION_SCHEMA.TABLES.TABLE_NAME
    order by INFORMATION_SCHEMA.COLUMNS.ORDINAL_POSITION
    For XML PATH ('Column'), type
)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='dbo'
ORDER BY TABLE_NAME ASC  
For XML PATH ('Table'),Root('Tables')