2011-04-11 60 views
1

我想在SQL管理工作室中使用T-SQL查詢從數據庫(「數據庫模式」)中提取XML模式,而不是C#代碼。模式應該包括數據庫中的所有表。如何使用T-SQL提取數據庫模式?

我可以用得到的單個表如下:

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

但我怎麼把剩下的表?我的所有表格都以某種方式相關。

另請參閱this question,其中討論瞭如何在代碼中執行此操作。

+0

你所說的'使用T-SQL查詢,而不是code'意思呢? – JNK 2011-04-11 14:48:03

+0

我應該澄清。我編輯了這篇文章。 – retrodrone 2011-04-11 14:49:28

+0

更有意義,謝謝! – JNK 2011-04-11 14:49:56

回答

4

你可以送花兒給人使用sp_msforeachtable和動態SQL:

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

您可能必須與架構名稱的命名問題,因爲我認爲你將有dbo.或模式前綴表名。

+0

這給我一套.XSD,每個表一個。我可以以某種方式將它們與T-SQL結合起來嗎?即如果兩個表格通過一對多關係相關聯,則其中一個表格應該具有由另一個表格的子元素組成的元素。這是合理和可實現的嗎?謝謝! – retrodrone 2011-04-11 15:13:07

+0

不符合我給你的查詢。你可能會寫一些更復雜的動態SQL來查看這個元數據,但它似乎充滿了危險。 – JNK 2011-04-11 15:14:47

+0

哈哈,你已經把我的星期一描述成一個T.我必須找出別的東西。不管怎麼說,還是要謝謝你! – retrodrone 2011-04-11 15:19:32