【问题标题】:Database Analysis数据库分析
【发布时间】:2013-01-08 06:38:06
【问题描述】:

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

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

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

请指教!

谢谢, 阿夏

【问题讨论】:

    标签: database analysis


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 谢谢。我会检查红门工具。 .
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多