【发布时间】:2013-10-30 22:09:42
【问题描述】:
我们最近将其中一个 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。
【问题讨论】:
-
与标题相反,听起来您不想想要避免损坏的引用。
-
在这种情况下,您可能会打开将警告视为错误的选项。如果缺少对象,尝试构建会引发错误。
-
@Keith 取决于您如何看待它,但我猜是的。我想在设计时捕获损坏的引用(即在部署/运行时避免它们)。也许标题可以更好...
标签: visual-studio database-project