我们最近将我们的一个 SQL Server 项目移到了 Visual Studio 数据库项目中,但我认为有些地方出了问题,因为如果存储的过程引用了无效的表、表别名或列,它不会无法构建。只有在语法本身不正确时才会失败。
例如,以下示例可以愉快地编译(CREATE PROC 等已删除),尽管 A、B、C 和 D 不存在。
SELECT A.B FROM C WHERE D = 'nope'
但是这个失败(如预期的那样):
SELECT A.B FROM C WHERE D IS 'nope'
因此,我可以轻松创建一个引用无效列或表的存储过程,并且在我尝试部署它之前我不会知道,如果我要更改很多对象并且我需要一个全有或全无的部署,这可能会导致麻烦. 这也意味着我无法在不部署的情况下使用构建服务器验证我们的架构,但我想在尝试另一个之前先做一个,以确保数据库保持正常运行。
我发现最接近这一点的是代码分析(项目-> 属性),但这更适合最佳实践而不是捕获错误。
VS 不能使用现有的模式文件来检查我的代码是否正确?这种设计时分析和验证不是数据库项目的主要卖点吗?
如果相关,我正在使用 VS 2010 Premium。