【问题标题】:How to avoid broken references in a Visual Studio database project?如何避免 Visual Studio 数据库项目中损坏的引用?
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我试试这个
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多