2

我们最近将我们的一个 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。

4

1 回答 1

0

安装SQL Server Data Tools并将您的数据库项目升级到新的(通常命名的)“SQL Server 数据库项目”模板。我已经确认如果存在无效引用,这些项目将不会构建。

您只需右键单击项目并单击升级选项即可将数据库项目升级到新模板。我已经用我的几个数据库项目做到了这一点并且没有任何问题,我也没有任何问题适应新模板,因为 UI 和结构基本相同。但是请记住,任何自动构建过程都需要更新(请参阅此处)。

于 2013-10-30T14:09:42.740 回答