如何根据我的数据库模式验证客户端数据库?

时间:2009-03-03 14:07:08

标签: database validation schema integrity

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

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

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

6 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

  1. 让您的客户运行比较。 你需要说服你的 客户购买SQL许可证 比较并向他们发送架构 数据库的快照。
  2. 使用Red编写自己的应用程序 Gate的SQL比较SDK(595美元) 10个发行版)可以运行 在客户端站点。
  3. 让您的客户向您发送架构快照 使用您自己的比较自己进行比较 SQL比较的副本。红门 提供免费的架构快照工具 称为将创建的SQL Snapper 然后可以通过电子邮件发送给您的快照 由您的客户。由于这不包括任何数据,因此可能是您的客户愿意考虑的事情。
  4. 可以从我们的labs.red-gate.com网站下载SQL Snapper工具和SQL Comparison SDK示例代码。

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

    Red Gate Software产品经理David Atkinson。

答案 2 :(得分:0)

我们使用Redgate SQL Compare来实现这一目标,多年来它一直很好用。

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

你能创建像MySQL SHOW CREATE TABLES一样的架构转储吗?

答案 5 :(得分:0)

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