SQL Server Project View引用来自不同数据库的表

时间:2015-03-11 14:04:50

标签: sql-server sql-server-2012 dacpac sqlproj

我正在将数据库模型转换为SQLModel,因此我们可以开始使用dacpac进行部署。我已经完成了一些其他数据库但没有引用外部数据库。我有一个问题,其中一对视图和存储过程引用来自同一服务器上的不同数据库的表。对于存储过程,没有错误,因为过程不需要创建单元运行时的表。但对于视图,我得到

的构建错误
  

包含对象的未解析引用。对象都可以   不存在或引用不明确

我一直试图找到一种方法让它工作,而不必有第二个项目,其中有字段到位或引用不同的dacpac。我的同事建议尝试同义词,但这也没有解决问题。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您需要创建其他SQL项目并为每个外部数据库引用导入其他dbo。然后,在主项目中创建对其他(外部参考)项目的引用。您可能必须在主db(maindb.schema.object - > schema.object)中查找/替换引用主db的任何三级引用。最后,构建解决方案,如果它没有错误,您的引用错误应该清除。

您可以使用报告的错误代码(71561,71501)来搜索其他人如何解决此问题,但上述步骤对我有效。

答案 1 :(得分:0)

我刚刚在两个数据库(SQL Server 2012上名为x6的本地和外部数据库)上运行它

create view dbo.view1 
as

select * from dbo.x5 inner join x6.dbo.t2
on dbo.x5.i1 = x6.dbo.t2.x1
;
go

create view dbo.view2
as

select * from dbo.x5 inner join x6.dbo.t2
on dbo.x5.i1 = x6.dbo.t2

未创建View2,因为我没有使用以下消息引用用于连接到表x5的列:

多部分标识符" x6.dbo.t2"无法受约束。 所以当我明确指出用于加入的列时,它就起作用了。此外,如果两个表中有重复的名称,它可能会混淆。

如果两个表中都有一个名为state1的列,并且你从....中选择了name1,那么会给你一个模糊的引用错误。