2015-10-05 56 views
1

好吧,有一堆关于此的帖子,但所有不同版本的问题。我无法找到与我的具体(虽然,基本)版本的问题的帖子。首先,这些都是我跟着创建在Visual Studio 2012(壳)数据库项目(SSDT)中的步骤与SQL Server数据工具:SQL71501 SSDT未解决的引用 - 比较模式

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

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

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

AND

X-具有未解决的引用对象

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

  1. 只有一个数据库的SQL Server对象使用(意见等)

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

  3. 我的VS 2012版本中不存在“为公用对象启用扩展Transact-SQL验证”选项,此功能已由Microsoft删除,并已关闭。

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

数据库项目仍不会生成。错误只涉及某些观点和程序。有没有人有这个问题?

+1

引用指向的对象/表是否存在? –

+0

此外,您应该能够双击这些警告/错误,并让SSDT带您到受影响的行(或至少非常接近它们)。这可以帮助您排除故障。我会寻找语法问题,缺少对象或类似的东西。我们可能会遇到问题,有时候会有相同数据库的3个部分名称,或者暗指“dbo”(例如DB..Table而不是dbo.Table)。 –

+0

是的,表格存在。这是一个生活/工作数据库。当双击时,它确实将我带到了线上。它说它无法确定该字段来自哪个表,并且列出了该select语句中涉及的所有表。当对数据库运行时,该语句当然可用。 – JBDev1

回答

1

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

有在表中的字段已他们的名字用空格填充,即:

[字段1]

的观点,特效等引用当然这些字段仅使用没有填充的名称部,即: 字段1

该名称[Field1]非常错误,实际名称是[Field1]导致架构中断。

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