我正在寻找一种方法,在更新应用程序版本后验证生产数据库的SQL架构。如果应用程序与数据库架构版本不匹配,应该有一种方法来警告用户并列出所需的更改。
是否有一个工具或框架(可编程使用),内置特性可以完成这项任务?还是有一些简单的算法可以运行比较操作?
更新:Red Gate公司列出了“从$395起”。是否有免费的工具?或者比仅保持版本号更可靠的解决方案?
尝试这个SQL语句。
- 在每个数据库中运行它。
- 将输出保存到文本文件中。
- 对比这些文本文件。
/* 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
您没有提到您使用的RDMBS:如果您的RDBMS中有INFORMATION SCHEMA视图,并且您可以从同一主机引用两个模式,则可以查询INFORMATION SCHEMA视图以识别以下差异:
我曾经为SQL Server编写了一组查询,专门用于此目的 - 它可以很好地识别差异。许多查询都使用LEFT JOIN和IS NULL来检查预期项的缺失,其他查询则比较列类型或约束名称。
这可能有点繁琐,但是它是可行的。
我发现了一个小巧且免费的工具,它可以满足我的大部分需求。 http://www.wintestgear.com/products/MSSQLSchemaDiff/MSSQLSchemaDiff.html
它非常基础,但可以显示两个数据库之间的模式差异。 它没有任何花哨的功能,如自动生成脚本来消除差异,也不会比较任何数据。
它只是一个小巧、免费的实用程序,可以显示模式差异 :)
试试dbForge Data Compare for SQL Server。它可以比较和同步任何数据库,即使是非常大的数据库。快速、简单,总是提供正确的结果。 在您的数据库上尝试并评论该产品。
我们可以向您推荐一款可靠的SQL比较工具,它可以在您的SQL Server数据库中以3倍的速度比较和同步表数据。这就是dbForge Data Compare for SQL Server。
主要优点:
此外还有免费的30天试用期和30天无风险购买保证。