我正在寻找一种在更新应用程序版本后验证生产数据库上的SQL模式的方法.如果应用程序与数据库架构版本不匹配,则应该有一种方法来警告用户并列出所需的更改.
是否有一个工具或框架(以编程方式使用)具有内置功能来做到这一点?或者是否有一些简单的算法来运行这种比较?
更新:红门列出"从$ 395".有空吗?或者比保留版本号更加万无一失?
AJ.*_*AJ. 22
试试这个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
Run Code Online (Sandbox Code Playgroud)
您可以通过查看两个数据库的数据字典(sys.objects,sys.columns等)并进行比较来以编程方式执行此操作.但是,还有像Redgate SQL Compare Pro这样的工具可以帮到你.我现在已将此作为数据仓库系统QA工具的一部分指定,包括我目前正在进行的工作.在我目前的演出中,这根本不是问题,因为DBA已经在使用它了.
使用这些工具的基本方法是维护一个构建数据库的参考脚本,并将其保留在版本控制中.将脚本运行到临时数据库并将其与目标进行比较以查看差异.如果您有这种倾向,它也会生成补丁脚本.
据我所知,除非你想写自己的,否则没有任何自由.Redgate足够便宜,可能也是免费的.即使作为QA工具来证明生产数据库不在配置中,它也意味着它会在一次事故后为您节省购买价格.