如何比较/验证SQL架构(how to compare/validate sql schema)

2019-09-03 01:50发布

我在寻找一种方式更新应用程序版本后,以验证在生产DB SQL模式。 如果应用程序不匹配数据库架构版本,应该有警告用户,并列出所需的变革方式。

是否有工具或框架(以编程方式使用)内置的功能来做到这一点? 或者是有一些简单的算法来运行这个比较呢?

更新:“从$ 395”红门名单。 什么免费的吗? 或者不仅仅是保持版本号更万无一失?

Answer 1:

试试这个SQL。
- 运行它针对每个数据库。
- 保存输出到文本文件。
- DIFF文本文件。

/* get list of objects in the database */
SELECT name, 
       type 
FROM  sysobjects
ORDER BY type, name

/* get list of columns in each table / parameters for each stored procedure */
SELECT so.name, 
       so.type, 
       sc.name, 
       sc.number, 
       sc.colid, 
       sc.status, 
       sc.type, 
       sc.length, 
       sc.usertype , 
       sc.scale 
FROM   sysobjects  so , 
       syscolumns  sc 
WHERE  so.id = sc.id 
ORDER BY so.type, so.name, sc.name

/* get definition of each stored procedure */
SELECT so.name, 
       so.type, 
       sc.number, 
       sc.text 
FROM   sysobjects  so , 
       syscomments sc 
WHERE  so.id = sc.id 
ORDER BY so.type, so.name, sc.number 


Answer 2:

我希望我可以帮助 - 这是我在文章中建议阅读:

自动比较SQL Server数据库架构

它描述了如何可以自动使用T-SQL,SSMS或第三方工具SQL Server架构的比较和同步过程。



Answer 3:

您可以通过编程方式在看这两个数据库的数据字典(sys.objects中,SYS.COLUMNS等),并比较它们这样做。 然而,也有像工具展鹏的SQL比较专业 ,对你做这个。 我现在已经指定了此作为工装QA数据仓库系统,有几次的一部分,其中包括一个我目前的工作。 在我目前的演出,这是没有问题的,因为DBA在这里已经在使用它。

使用这些工具的基本方法是保持一个参考脚本构建数据库,并保持此版本控制。 运行该脚本到一个临时数据库,并将其与你的目标比较一下,看的差异。 它还将生成补丁脚本,如果你觉得这样的倾向。

据我知道有什么免费做这个,除非你觉得写你自己的。 展鹏是足够便宜,它也可能是免费的。 即使作为一个QA工具来证明生产DB是不是在它的意思是将其购买价格节省你的一个事件发生后的配置。



Answer 4:

您现在可以使用我的SQL管理工作室免费运行模式比较数据比较和同步更改。 不再需要从这里许可证密钥下载http://www.simego.com/Products/SQL-Admin-Studio

同时对工作SQL Azure的。

[更新:是的,我上面的程序的作者,因为它是免费现在我只想与社会各界分享]



Answer 5:

如果你正在寻找一种工具,可以比较两个数据库,并显示你的区别红门使得SQL比较



Answer 6:

你没有提到你使用的RDMBS:如果信息架构视图是在RDBMS中可用的,如果你能在同一台主机引用两种模式中,你可以查询信息架构视图,以确定差异:-tables - -column类型-constraints列(例如主键,唯一约束,外键等)

我已经写了一组查询出于这样的目的SQL Server上对过去的工作 - 它运作良好,以确定差异。 很多查询的使用留下的是空连接来核实没有预期的项目,其他人比较喜欢的东西列类型或约束的名称。

这是一个有点乏味,但它的可能。



Answer 7:

我发现这个小和免费的工具,最适合我的需要。 http://www.wintestgear.com/products/MSSQLSchemaDiff/MSSQLSchemaDiff.html

这是非常基本的,但它显示了两个数据库的架构差异。 如自动生成的脚本,使差异消失,并没有任何比较的数据它没有任何花哨的东西。

这只是一个小的,免费的实用工具,显示你的架构差异:)



Answer 8:

做一个表,并存储在那里,你的版本号。 只要确保你更新是必要的。

CREATE TABLE version (
    version VARCHAR(255) NOT NULL
)
INSERT INTO version VALUES ('v1.0');

然后,您可以检查存储在数据库中的版本号,您的应用程序的安装过程中匹配的应用程序代码或到任何地方。



Answer 9:

SQL红门比较 。



Answer 10:

这RDBMS是这样的,以及如何复杂是潜在的变化?

也许这只是一个比较行数和索引数为每个表的事情 - 如果你有触发器和存储过程版本的担心还那么你需要更多的东西产业



Answer 11:

尝试dbForge数据比较为SQL Server 。 它可以比较和同步任何数据库,甚至是非常大的。 快速,轻松,总是提供了一个正确的结果。 试试你的数据库和对产品发表评论。

我们可以推荐你一个可靠的SQL比较工具,提供您所需的SQL Server数据库3时的速度比较表中的数据同步。 这是dbForge数据比较为SQL Server。

主要优点:

  • 更快的比较和大型数据库的同步
  • 本地SQL Server备份的支持
  • 表,列和模式的自定义映射
  • 多个选项来调整你的比较和同步
  • 产生比较和同步报告

加上30天免费试用,无风险,购买30天退款保证。



文章来源: how to compare/validate sql schema
标签: sql redgate