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

时间:2011-04-11 14:44:35

标签: sql sql-server tsql

我想在SQL管理工作室中使用T-SQL查询而不是C#代码从数据库(“数据库模式”)中提取XML模式。架构应包括数据库中的所有表。

我可以使用以下内容获得单个表:

DECLARE @schema xml
SET @schema = (SELECT * FROM Student FOR XML AUTO, ELEMENTS, XMLSCHEMA('StudentSchema'))
select @schema

但是如何合并其余的表?我的所有表都以某种方式相关。

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

2 个答案:

答案 0 :(得分:4)

你总是可以使用sp_msforeachtable和动态sql:

exec sp_MSforeachtable '
DECLARE @schema xml
SET @schema = (SELECT * FROM ? FOR XML AUTO, ELEMENTS, XMLSCHEMA(''?Schema''))
select @schema
'

您可能对架构名称存在命名问题,因为我认为您将为表名提供dbo.或架构前缀。

答案 1 :(得分:1)

你的意思是Information Schema Views (Transact-SQL)

SELECT * FROM INFORMATION_SCHEMA.COLUMNS
FOR XML AUTO