1

我应该分析一个包含 200 多个表和 100 多个存储过程和一些视图的旧数据库。

我应该找出当前未使用的表。访问所有关系,报告过时的关系,找出丢失的关系,未使用的列等

今天我花了 5 个小时,只能完成 7-8 个表格,我对如何创建报告感到困惑,我应该使用 Visio 还是 excel 或其他什么?

请指教!

谢谢, 阿夏

4

2 回答 2

1

如果您使用的是 SQL Server,我会推荐 Red Gate 工具。 http://www.red-gate.com/

我相信从 SQL Server 到 Oracle 再到 MySQL 的所有东西都有工具来监控事务、谁连接到数据库以及他们正在运行什么查询。我会从那里开始。

您还可以运行查询以查看是否有任何字段只有 NULL,暗示它们从未使用过。

要找出正在使用的列是比较困难的。如果您有使用数据库的应用程序的源代码,我会去那里尝试编写一个程序来解析所有数据库调用并生成报告。不过,这可能非常困难。

另一个想法(即使它不是最好的)是制作数据库的副本并切换您的系统以在开发机器上使用恢复的副本。然后通过修改数据库副本然后记录问题来证明您对未使用的列/表的预感。您是否删除了一个表并且应用程序崩溃了?然后很重要!(我意识到这是一件非常痛苦的事情,因为您无法测试所有内容。)

不幸的是,对于数据库模式,您最终会暴露出许多应用程序最可能依赖的接口。可以这么说,猫已经从袋子里出来了。我认为在做了一些研究之后,回过头来说最好保持原样是可以接受的。

于 2013-01-24T18:02:32.977 回答
1

这绝对是您无法在任何时候手动完成的任务,您需要使用其他工具。

以下是您可能想做的几件事和推荐的工具:

  • 检查哪些数据库对象未被任何其他对象引用,并在初始分析中跳过它们。你可能会发现很多这样的东西。工具 - ApexSQL 清洁
  • 安装一些审计工具并运行几天,看看哪些表/存储过程被使用得最多。工具 - ApexSQL 审计
  • 检查您的应用程序并查看那里正在使用哪些对象。如果有一些存储过程或表未被任何应用程序代码引用,您可能可以将它们标记为可以删除。如果您的代码只是 .NET,那么您可以使用 ApexSQL Clean 来执行此操作,但我建议您使用好的旧 grep 函数。
  • 完成分析后,您可能需要考虑重构一些表或其他对象以适应新要求。工具 - ApexSQL 重构

一般来说,使用 Red-Gate 或 Idera 的工具不会出错,但我更喜欢 ApexSQL

于 2013-02-03T13:19:04.250 回答