2011-05-30 65 views
3

有沒有一種方法可以使用此數據庫的存儲過程從SQL Server數據庫創建模式圖?從存儲過程生成架構

我不介意我是否必須使用外部軟件。

+0

你只能看到數據庫中的存儲過程嗎?不是桌子? – gbn 2011-05-30 10:11:33

+0

@gbn:@Filip De Vos:我對所有事情都有完全的瞭解。問題是數據庫沒有任何模式。它只是表格,視圖和存儲過程。沒有FK。連接只能通過查詢完成。我不希望他們被存儲在數據庫中。只是爲了將它們視覺化。即通過外部工具。謝謝 – 2011-05-30 12:08:45

回答

0

您可以構建使用SMO庫中的Scripter Class的SQLCLR過程。

更新:關於這個問題的更多信息揭示了這個想法是基於存儲過程的內容生成一個依賴關係的表模式。

該方法將從information_schema視圖生成表結構,然後解析syscomments表的內容以找出關係。這將始終是近似的,因爲很難從SQL語句完全建立一對多關係。我想你可以根據更多參考的領域做出猜測。

+0

權限仍然適用=無表可見性。如果OP可以創建存儲過程,那麼他們可能會從他們可以看到的表中生成它。 – gbn 2011-05-30 10:17:03

+0

我沒有看到他在附近查看桌子時提到了一個問題? – 2011-05-30 10:19:18

+0

@Filip De Vos:您已經假設「我如何使用* a *存儲過程生成模式」。 OP說「使用*存儲過程」。作爲一位英語母語的讀者,我將其解讀爲「我如何從存儲過程獲取表格模式,我可以看到」 – gbn 2011-05-30 10:25:15

0

如果看不到表格,則無法生成模式。

也就是說,如果只有存儲過程的權限,則不能。

至少有兩個原因:

  • 的存儲過程可以加入並使用幾個表
  • 你看不到約束,索引,密鑰等即使你有表名

基本上,你只能:

  • 看看你有什麼權限在SSMS等
  • 看到內部,如果你有教職員定義權

編輯,澄清後

沒有辦法腳本暗示方面(如缺少外鍵)從代碼模式的

1

你可以試試CodeSmith Generator。它是SchemaExplorer Schema Discovery API允許您以編程方式訪問給定數據庫的數據庫元素並使用它創建一些具有創意的內容。但是,以這種方式對模式/圖表進行反向工程在邏輯上仍然很困難。