如何使用T-SQL提取数据库模式?

如何使用T-SQL提取数据库模式?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想使用SQL management studio中的T-SQL查询而不是C代码从数据库中提取XML模式(“数据库模式”)。架构应该包括数据库中的所有表 我可以使用以下方法获得一张表: DECLARE @schema xml SET @schema = (SELECT * FROM Student FOR XML AUTO, ELEMENTS, XMLSCHEMA('StudentSchema')) select @schema 但是如何组合其余的表呢?我所有的表在某种程度上都是相关的 另请参

我想使用SQL management studio中的T-SQL查询而不是C代码从数据库中提取XML模式(“数据库模式”)。架构应该包括数据库中的所有表

我可以使用以下方法获得一张表:

DECLARE @schema xml
SET @schema = (SELECT * FROM Student FOR XML AUTO, ELEMENTS, XMLSCHEMA('StudentSchema'))
select @schema
但是如何组合其余的表呢?我所有的表在某种程度上都是相关的


另请参阅,其中讨论了如何在代码中执行此操作。

您可以始终使用
sp\msforeachtable
和动态sql:

exec sp_MSforeachtable '
DECLARE @schema xml
SET @schema = (SELECT * FROM ? FOR XML AUTO, ELEMENTS, XMLSCHEMA(''?Schema''))
select @schema
'
模式名可能有命名问题,因为我认为表名将有
dbo.
或模式前缀。

您的意思是


你所说的使用T-SQL查询而不是代码是什么意思?我应该澄清一下。我编辑了这篇文章。这更有意义,谢谢!这会给我一组.xsd,每个表一个。我可以将它们与T-SQL结合起来吗?i、 例如,如果两个表由一对多关系关联,则其中一个表的子表上应该有一个元素。这是否合理和可行?谢谢!不是我问你的问题。您可能会编写一些更复杂的动态SQL来查看元数据,但这似乎充满了危险。哈哈,您已经向a T描述了我的星期一。我还得想些别的办法。无论如何谢谢你@Retrodrone-很乐意帮忙。根据您的需求,您可能希望研究第三方工具,比如来自Redgate的工具。
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
FOR XML AUTO