SSDT数据库项目中对对象的未解决引用的解决方案

时间:2019-10-16 17:14:45

标签: sql-server-data-tools database-project

我想建立一个sql server数据库的dacpac。我使用ssdt将数据库对象导入到项目中。构建成功完成,没有任何错误,但是有很多警告(超过100条)与未解决的引用有关。

未解决的参考点归因于以下原因:

  • 来自同一服务器中其他数据库的对象。(警告SQL71562)

-来自其他SQL Server实例的其他数据库中的对象(警告SQL71562)

-引用使用三部分命名约定的同一数据库本身的对象[DatabaseName]。[SchemaName]。[ObjectName](警告SQL71562)

-包含对对象的未解析引用。该对象不存在,或者引用不明确,因为它可以引用以下任何对象。 (警告SQL71562)

-对象定义[xxx]。[#xyz]与对象定义[xxx]只是大小写不同(SQL警告:SQL71558)

-警告SQL71562:计算列:[#abc]。[def]包含对对象的未解析引用。该对象不存在,或者引用不明确,因为它可以引用以下任何对象:

我尝试部署仅包含警告但构建失败的构建;

我对SSDT很陌生,非常感谢您的帮助。

先谢谢了。 :)

1 个答案:

答案 0 :(得分:0)

这里要解决几个问题,最简单的是大小写和三部分名称。

对于三部分名称,请在所有* .sql文件中查找/替换以替换[databasename]。[dbo]。与[dbo]。以及带方括号/非方括号的项目的各种组合就足够了。

对于大小写差异,如果差异不大,请修复它们。否则,您可以为该特定警告编号设置全局忽略。

外部数据库引用将变得更加棘手-需要外部数据库引用(带有dacpac)或指向要编译的另一个项目的指针。我发现dacpac更容易入门,但这是您必须玩的东西。我在{@ {3}}博客上有一些关于SSDT的内容,可能对您有所帮助。 (请注意-文章很旧,但是概念并没有太大改变)

在其他情况下,您可能必须逐案解决。可能是因为它们所依赖的对象使用的是“相同的数据库,由3部分组成的名称”约定,并且在更改时将得到解析。有些可能是由于外部参考。这些将需要一些工作来解决。如果项目成功构建,则可以尝试生成脚本或发布/比较。

相关问题