我有一个非常大的数据库,需要绘制图表。数据库是 x64 上的 SQL Server 2008。它很大,因为有数百个相关表,每个表最多有 2000 个字段(有些是稀疏的),表之间有多种关系(实际上每个表通常有数百个),多个模式......你明白了。

我尝试使用 SQL Server Management Studio 的数据库图表功能,但它因 Win32Exception 崩溃:“没有足够的存储空间来处理此命令......”

我尝试在另一台计算机上使用 Visio 的逆向工程功能来连接并绘制图表,但这已经持续了几个小时,没有完成的迹象。

构建这个巨大模式的脚本是由我们为这项工作构建的工具编写的。虽然该工具可以很好地完成其工作,但将其输出可视化却很困难。

我正在寻找一个工具来踢出这个数据库的图表,这样我们就可以做到这一点。有什么建议么?

编辑:只是强调一下,该图确实不应该用于实际有用的参考。它是一个客户关系管理设备,用于展示系统的复杂性/规模。

有帮助吗?

解决方案

为该大小的数据库生成任何形式的图像,简直就是糖果,它被卡在吸引喘息的墙上,诚实地没有偶尔的目的。为什么不使用类似工具 红门的文档工具 那将达到实际目的?请理解,我并不是以一种嘲笑的方式说这句话,但是在尝试绘制一个巨大的数据库之前,我一直在这条路上,而且我在某种程度上成功了,但是从未在某种程度上找到一个好的出口。

其他提示

我在一个有数百张桌子(近 1000 张)的地方工作,没有人真正知道系统中发生了什么,公司正在发展并雇用了很多人。一个人的任务是绘制图表,他自动神奇地创建了一张巨大的平铺海报,其中包含每张桌子,并用线连接各个桌子(遍布整个地方)。我不确定他用的是什么,几年前是 Unix 和 Oracle(早于 Linux 和开源)。他的图表中的表格布局没有真正的韵律或理由。他成功地创建了每张桌子的图表。这张“海报”被贴在公共区域的墙上,看了几眼,但没有人真正使用过它,它无法使用,太杂乱,太杂乱。因此,我使用 MS-Word 创建了一个包含 20 个主表的单页图表(当我“发现”新的主表时,它经历了几次迭代),每个外键都有行,每个表都以逻辑方式定位。我显示了列名称、数据类型、可空性、PK 和所有 FK。我把图表挂在墙上显示器旁边。最终每个人都想要我的图表的副本,包括制作“海报”的人。当我离开那份工作时,他们仍在向新员工提供我的图表。

我建议您像探索者一样工作,找到关键表并在您探索时绘制它们,在发现系统时根据需要制作尽可能多的特定图表。试图自动制作一张巨大的“海报”效果并不好。

由于您有多个模式,也许一个好主意是每个模式生成图表

使用GraphViz。使用一些SQL语句生成DIGRAM,然后通过dot.exe运行它以生成PDF或PNG。

我已经用它来生成SQL Server表中数据的DIGRAM。没有理由也可以将其用于桌子。

http://www.graphviz.org/

还有Java,Silverlight和Ajax实用程序可导航超大图,因为PDF仅适用于一页。

我会避免在单个图中做整个事情。正如您提到的那样,工具崩溃了,并且可能无法轻松理解数百个表具有数百张表具有数千张记录的图表。您可以生成较小逻辑区域的图表,并与其他逻辑区域重叠?

或者,您可以尝试使用GraphViz之类的东西来解析DDL语句,然后产生图形。它可能会搅拌一段时间,但我记得在大学海报大小的图表中看到的图片很小,它们的复杂性可能与您的复杂性相同。祝你好运!

fwiw,假设您确实想继续此操作,我个人发现Visual Studio 2010数据库Modeller确实遇到了我到目前为止遇到的最好的图表 - 只需导入您的数据库,就好像您将其用于LINQ2SQL一样

schemaspy提供了一个方便的接口来生成交互式图,该图表使用GraphViz作为后端跨越多个模式。我从来没有尝试过这种尺寸的任何东西。

Intellij(特别是为了尝试的想法,但我相信他们的其他IDE提供了此功能 https://www.jetbrains.com/)具有内置的数据库客户端设施,您可以通过突出显示所需的表,“右键单击”并选择“图表”选项,从这里连接到数据库,并分析单个表,特定组合或表格或所有表。您可以保存以供以后参考并打印。我刚刚在500多个表的大dB上尝试了此操作,并且在几秒钟内呈现,该矢量图是视觉上视觉数据库结构以及某些表之间的关系和约束的替代方法,但不建议打印。

enter image description here

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top