2009-03-03 202 views
0

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

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

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

回答

3

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

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

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

0

我们使用Redgate SQL Compare进行此操作,多年来一直为我们服务。

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

+0

我有一个快速浏览... - 问题1:我需要我可以发送给客户端的东西,因为不是所有的人都会将他们的数据库发送给我们。 - 问题2:我们的一些客户使用Oracle – ToastedSoul 2009-03-03 14:21:23

+0

啊,oracle位是个问题。但是对于问题1,你可以让他们给你发一个干净的数据库还原或像丹尼尔在下面说的那样,让他们导出所有模式脚本并在本地运行。 – 2009-03-03 14:26:25

0

在redgate的人有一个伟大的工具,称为SQL Compare

0

如果你使用Windoze,我已经使用了多年的高级查询工具,并且可以证明,对于金钱来说,它比其他任何东西都重要。特别是,它会在数据库之间生成差异报告。它是ODBC/VB6,可以针对数十个数据库运行。一探究竟。 (不,我不属于QueryTool,也不拥有它的任何部分,只是一个快乐的客户端。)

1

有使用红门工具三个选项:

  1. 让你的客户端运行比较。 您需要说服您的 客户端购买SQL的许可证 比较并向他们发送数据库的模式 快照。
  2. 使用红色编写您自己的应用程序 Gate的SQL比较SDK(售价$ 595 for 10个发行版),可在客户端站点运行 。
  3. 请求您的客户端向您发送模式快照,并使用您自己的 副本SQL Compare自行运行比较。Red Gate 提供一个名为SQL Snapper的免费模式快照工具 ,该工具将创建 快照,然后客户可以通过电子邮件将其发送给您 。由于这不包括任何数据,这可能是您的客户愿意考虑的事情。

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

Oracle兼容性现在以Early Access Build的形式提供。如果您有兴趣或想尝试使用工具visit the product page。您可以免费使用此工具,直到完整版本的工具。

大卫阿特金森,产品经理,红门软件。