我正在寻找一种在更新应用程序版本后在生产数据库上验证SQL模式的方法。如果应用程序与DB模式版本不匹配,应该有一种方法来警告用户并列出所需的更改。
有没有内置功能的工具或框架(以编程方式使用)来实现这一点?或者是否有一些简单的算法来运行这种比较?
更新:红门列表“$395起”。有什么免费的吗?或者比仅仅保留版本号更简单?
发布于 2008-10-03 14:42:15
试试这个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 发布于 2014-02-04 17:08:34
我希望我能帮上忙--这是我建议阅读的文章:
Compare SQL Server database schemas automatically
它介绍了如何使用T-SQL、SSMS或第三方工具自动执行SQL Server架构比较和同步过程。
发布于 2008-10-03 06:31:11
您可以通过查找数据字典(sys.objects、sys.columns等)以编程方式完成此操作。对两个数据库进行比较。但是,也有像Redgate SQL Compare Pro这样的工具可以为您做这件事。现在,我已经将其指定为数据仓库系统上的QA工具的一部分,包括我目前正在处理的那个。在我目前的工作中,这完全没有问题,因为这里的DBA已经在使用它了。
使用这些工具的基本方法是维护一个构建数据库的参考脚本,并将其保持在版本控制中。将该脚本运行到一个临时数据库中,并将其与您的目标进行比较,以查看差异。如果你愿意的话,它还会生成补丁脚本。
据我所知,除非你想写自己的东西,否则没有免费的东西可以做到这一点。Redgate足够便宜,还不如是免费的。即使作为一个QA工具来证明生产数据库不在预期的配置中,它也会在一次事件后为您节省购买价格。
https://stackoverflow.com/questions/165401
复制相似问题