有没有办法检查 SQL Server 数据库的完整性?我有这些开发人员(好吧,包括我在内)不断更改我们数据库中的对象(视图/函数/存储过程),有时我们更改对象的签名或删除对象,其他对象变得无效/不可编译。我想获得某种关于哪些对象被破坏的报告/警报,最好是可以与 CruiseControl.NET 集成的对象。想法?
3 回答
Olla Hallengran 提供了一种出色的方法来检查数据库的完整性。请参考 http://ola.hallengren.com/sql-server-integrity-check.html
我认为您需要的是可以通过 CruiseControl.NET 执行的数据库单元测试。我推荐使用 tSQLt ( http://tsqlt.org )。RedGate 还在该产品的顶部销售了一个不错的 GUI,但不是获得您需要的功能所必需的。(http://www.red-gate.com/products/sql-development/sql-test/
您描述的问题很常见-让多个开发人员在数据库上工作是有问题的。
据我所知,没有简单的方法可以按照您提到的方式检查数据库对象的完整性 - 存储过程等之间的依赖关系在编译时解决,如果该依赖关系无效,proc 将返回错误运行。您可以重新编译所有过程、函数、视图等以清除批处理期间的错误。
但是,问题不在于您需要检查数据库的完整性,而在于您没有一个流程可以从一开始就避免该完整性问题。
有许多解决方案可以最大限度地减少问题;这有点取决于你的开发设置你走哪条路。该过程通常称为“连续数据库集成”。
杰夫·阿特伍德很久以前就提供了概述,不久前就提供了更新(查看链接)。还要看看Redgate 工具——这些工具让这个过程非常轻松。