未解决的相同数据库项目的引用

时间:2014-09-08 02:36:52

标签: visual-studio-2013 sql-server-data-tools database-project

我在Visual Studio 2013中创建了一个SQL Server数据库项目,并导入了从生产数据库中获取的DACPAC。当我尝试构建项目时,我得到了数百个SQL71501和SQL71561错误(这两个错误都是"未解析的对象引用")。检查脚本问题是许多视图和存储过程使用三个部分名称:[database]。[schema]。[object]。

似乎只要遇到包含数据库项目所代表的数据库的三部分名称,Visual Studio 2013就会抛出此错误。例如,如果数据库项目代表数据库" MyDatabase"并且该项目中的SQL脚本包含SELECT t.Column1 FROM MyDatabase.dbo.MyTable t之类的内容,然后VS 2013在构建项目时抛出SQL71501或SQL71561。

有没有办法抑制刚刚应用于当前数据库的未解决的引用错误?我仍然希望Visual Studio为未解析的外部数据库引用抛出错误。

编辑,更正:最初声明错误代码是SQL71501。但是,Visual Studio似乎会针对同一数据库的未解析引用抛出SQL71501和SQL71561错误。

2 个答案:

答案 0 :(得分:7)

实际上有两种解决方法。我个人认为SSDT中存在一个关于当前数据库中三部分对象名称的错误。

  1. 创建项目快照(dacpac)并将其作为数据库引用引用。请记住在“添加数据库引用”对话框中清除数据库变量字段。
    它的工作方式不过Microsoft不推荐这种方法,可能会导致其他问题: https://connect.microsoft.com/SQLServer/feedbackdetail/view/1047094/post-deployment-script-is-not-generated-in-the-publish-script

  2. 在您的代码中,将所有出现的MyDatabase.dbo.MyTable替换为 [$(DatabaseName)] .dbo.MyTable
    https://social.msdn.microsoft.com/Forums/sqlserver/en-US/1863d960-d32d-4920-9a30-13dc86c6f857/sql71562-unresolved-reference-to-object-followd-by-database-name-in-the-same-project?forum=ssdt&prof=required

答案 1 :(得分:1)

在Visual Studio中:

1)打开SQL对象资源管理器,链接数据库服务器,右键单击未解析的参考数据库和"提取数据层应用程序"

enter image description here

2)插入文件路径。通常我使用\ Documents \ SQL Server Management Studio \ DAC Packages \并单击确定

3)等待提取

4)右键单击项目参考和添加数据库参考

enter image description here

5)然后用[$(YourDB)]前缀

替换函数SP,..中的引用