我们的客户使用SQLServer / Oracle数据库。多年来,我们向他们发送了许多必须手动运行的更新脚本。大多数时候,一切都很顺利,但是不时有一个脚本没有完全运行到底或者有一些错误(在升级时没有检测到)。此外,有时甚至“智能用户”也会将索引/表添加到这些数据库中,无论出于何种原因。后来,这些违规行为导致了问题。
现在,我的任务是根据我们自己的数据库模式(表,数据类型,索引,视图等)找出验证/验证客户端数据库的方法。输出应该是某种差异文件,表明数据库中缺少什么/不应该是什么。我可以在我们的应用程序内部的代码(C ++)中执行此操作,或者我可以为此目的创建外部工具。
在我开始编码之前,我想问一下是否已经有一个可以产生必要结果的工具,或者至少可以帮助我从我们的主数据库(Oracle和SQLServer)生成一个像样的xml文件?或者是否有一个可以帮助我编写自己的工具的库?
答案 0 :(得分:3)
我之前使用过这种技术,不需要购买任何工具。
企业管理器具有“创建脚本”功能。在参考数据库和比较数据库上执行此操作。选择适当的选项以为您关注的对象生成脚本。接下来,只需将两个生成的文件与您最喜欢的diff工具进行比较。
您可以使用Oracle工具执行类似的过程,以便导出DDL脚本。
答案 1 :(得分:1)
使用Red Gate的工具有三个选项:
可以从我们的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,我也不拥有它的任何部分,只是一个快乐的客户。)