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