我在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错误。
答案 0 :(得分:7)
实际上有两种解决方法。我个人认为SSDT中存在一个关于当前数据库中三部分对象名称的错误。
创建项目快照(dacpac)并将其作为数据库引用引用。请记住在“添加数据库引用”对话框中清除数据库变量字段。
它的工作方式不过Microsoft不推荐这种方法,可能会导致其他问题:
https://connect.microsoft.com/SQLServer/feedbackdetail/view/1047094/post-deployment-script-is-not-generated-in-the-publish-script
在您的代码中,将所有出现的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)