我在VS 2010中创建了一个新的SQL Server数据库项目,从名为“managers”的本地数据库导入了数据库对象和设置,并在尝试构建项目时收到以下错误:
SQL03006:视图:[dbo]。[vw_mlFunds]对象[管理员]有一个未解析的引用。[dbo]。[mlfunds]。
我不知道为什么这个视图完全限定了表引用以包含实际的数据库名称,我宁愿不必更改sql,因为它是别人的代码,从技术上讲它并不正确。但我认为完全限定表名以包含数据库的名称会让VS编译器感到困惑,因为它期待[dbo]。[mlfunds],而不是[管理员]。[dbo]。[mlfunds]。如何最好地解决这个问题?我可以在某处设置新的数据库名称变量/别名吗?或者我是否必须重构/修改sql以使其编译?提前谢谢。
答案 0 :(得分:5)
实际上,似乎必须修改代码,因为这不受支持。在这篇文章中找到答案:
答案 1 :(得分:2)
创建项目和导入数据库后,我遇到了同样的错误。对我来说问题是FROM表引用包含完全限定名称,但所选字段没有;如下
SELEC l.UserID, l.Email, m.DOB, ...
FROM ***[DBName].dbo***.Layout as l
LEFT OUTER JOIN masterUs as m
我通过删除DBName和DBO部分修改了完全限定引用,并且所有错误都已解决
SELECT l.UserID, l.Email, m.DOB, ....
FROM Layout as l
LEFT OUTER JOIN masterUs as m
答案 2 :(得分:1)
您需要为[managers]数据库创建另一个数据库项目,并让您的项目“引用”另一个项目。您可以在[managers]数据库上执行此操作作为简单的反向工程步骤,该数据库将该数据库中的所有对象导入到新的VSDB项目中。请参阅Using References in Database Projects。