2011-05-30 66 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允许您以编程方式访问给定数据库的数据库元素并使用它创建一些具有创意的内容。但是,以这种方式对模式/图表进行反向工程在逻辑上仍然很困难。