【问题标题】:How to validate the clients database against my database schema?如何根据我的数据库模式验证客户端数据库?
【发布时间】:2010-10-11 00:39:18
【问题描述】:

我们的客户使用 SQLServer/Oracle 数据库。多年来,我们向他们发送了许多必须手动运行的更新脚本。大多数情况下,一切都很顺利,但有时脚本没有完全运行到最后或者有一些错误(升级时没有检测到)。此外,有时甚至“聪明的用户”也出于某种原因将索引/表添加到这些数据库中。后来,这些违规行为会导致问题。

现在我的任务是找出一种方法,根据我们自己的数据库架构(表、数据类型、索引、视图……)来验证/验证我们的客户数据库。输出应该是某种差异文件,指示数据库中缺少什么/不应该是什么。我可以在我们的应用程序内部使用代码 (C++) 执行此操作,或者我可以为此目的创建一个外部工具。

现在在我开始编码之前,我想问一下是否已经有一个工具可以产生必要的结果,或者至少可以帮助我从我们的主数据库(Oracle 和 SQLServer)生成一个像样的 xml 文件?或者是否有一个库可以帮助我编写自己的工具?

【问题讨论】:

    标签: database validation schema integrity


    【解决方案1】:

    我以前使用过这种技术,它不需要购买任何工具。

    Enterprise Manager 具有“创建脚本”功能。在您的参考数据库和比较数据库上执行此操作。选择适当的选项为您关心的对象生成脚本。接下来,只需将生成的两个文件与您最喜欢的 diff 工具进行比较即可。

    您可以使用可导出 DDL 脚本的 Oracle 工具执行类似的过程。

    【讨论】:

      【解决方案2】:

      使用 Red Gate 的工具有三个选项:

      1. 让您的客户运行比较。 你需要说服你的 客户购买 SQL 许可证 比较并向他们发送架构 您的数据库的快照。
      2. 使用 Red 编写您自己的应用程序 Gate 的 SQL 比较 SDK(595 美元 10 个发行版)可以运行 在客户站点。
      3. 请您的客户向您发送架构快照,然后 自己运行比较 SQL 比较的副本。红门 提供免费的模式快照工具 称为 SQL Snapper,它将创建 然后可以通过电子邮件发送给您的快照 由您的客户。由于这不包含任何数据,因此您的客户可能愿意考虑。

      可以从我们的 labs.red-gate.com 网站下载 SQL Snapper 工具和 SQL 比较 SDK 示例代码。

      Oracle 兼容性现在以 Early Access Build 的形式提供。如果您有兴趣或想试用该工具visit the product page。在该工具完全发布之前,您可以免费使用它。

      Red Gate Software 产品经理 David Atkinson。

      【讨论】:

        【解决方案3】:

        我们为此使用 Redgate SQL Compare,它多年来一直为我们服务。

        我们还使用 Redgate SQL Data Compare 来比较查找表的内容。

        【讨论】:

        • 我快速浏览了一下... - 问题 1:我需要一些可以发送给客户的东西,因为并非所有客户都会向我们发送他们的数据库。 - 问题 2:我们的一些客户使用 Oracle
        • 啊,oracle位有问题。但是对于问题 1,您可以让他们向您发送数据库的干净恢复,或者像 Daniel 下面所说的那样,让他们导出所有架构脚本并在本地运行。
        • 我又浏览了 redgate 站点:在 SQL 比较的常见问题解答部分,在“什么是许可条件?”下:“要将 SQL 比较命令行工具与您的应用程序一起重新分发,您必须购买 SQL 比较 SDK 许可证。”
        【解决方案4】:

        redgate 的人有一个很棒的工具,叫做 SQL Compare

        【讨论】:

        • 我快速浏览了一下... - 问题 1:我需要一些可以发送给客户的东西,因为并非所有客户都会向我们发送他们的数据库。 - 问题 2:我们的一些客户使用 Oracle
        【解决方案5】:

        你能像 MySQL 的 SHOW CREATE TABLES 这样创建一个模式转储吗?

        【讨论】:

          【解决方案6】:

          如果您使用的是 Windoze,我已经使用高级查询工具多年,并且可以证明,为了钱,它比其他任何东西都做得更多。特别是,它将生成数据库之间的差异报告。它是 ODBC/VB6,可以针对几十个数据库运行。看看这个。 (不,我不是 QueryTool 的成员,也不拥有它的任何部分,只是一个快乐的客户。)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-22
            • 2022-01-25
            • 2022-01-04
            • 2011-03-30
            相关资源
            最近更新 更多