SQL71501 SSDT未解析的引用 - 比较模式

时间:2015-10-05 18:19:17

标签: sql-server visual-studio-2012 database-schema sql-server-data-tools

好的,有很多关于此的帖子,但问题的所有不同版本。我找不到我的特定(尽管是基本的)问题版本的帖子。首先,这些是我使用SQL Server数据工具(SSDT)在Visual Studio 2012(shell)中创建数据库项目所遵循的步骤:

  • 创建新项目,SQL->数据库项目
  • 右键单击项目,选择“比较架构”
  • 设置源(服务器上的SQL Server实例)
  • 设置目标(本地数据库项目 - 当前项目)
  • 运行“架构比较”
  • 更新目标

这给了我一个SQL服务器数据库中所有对象的填充数据库项目。但是,在构建项目时,我得到了200多个未解析的引用错误:

  

X-包含对象的未解析引用。对象不存在或引用不明确,因为它可以引用以下任何对象:X,Y,Z

  

X-有一个未解析的对象

的引用

向Master添加数据库引用将错误减少到127,现在它更易于管理,但是没有解决。它只影响100个中的5个或10个对象。这里有一些要记住的事情:

  1. SQL Server对象中仅使用一个数据库(视图等)

  2. 只有2部分命名即(dbo.Table as T)

  3. 我的VS 2012版本中没有“为常见对象启用扩展Transact-SQL验证”选项,Microsoft已删除此功能,并且该功能已关闭。

  4. 我运行了命令行sqlpackage.exe并创建了数据库的dacpac,然后将其添加为数据库引用。

  5. 数据库项目仍然无法构建。错误仅适用于某些视图和过程。有谁有这个问题?

1 个答案:

答案 0 :(得分:1)

好的,我发现了问题......

表中有些字段的名称用空格填充,即:

[Field1]

引用这些字段的视图,过程等等当然只使用没有填充的名称部分,即: FIELD1

该名称[Field1]实际上是错误的,真实姓名是[Field1]这导致架构中断。

棘手的部分是......他们仍在SQL Server中工作。虽然SQL Server在有错误的查询中显示这些字段名称,但它仍然能够成功处理查询!我觉得有一些设置已被关闭服务器端...无论如何,SQL Server应该永远不会允许这些语句成功运行并且问题会被捕获。