Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server VS 2010数据库项目-SQL03006错误_Sql Server_Visual Studio 2010 - Fatal编程技术网

Sql server VS 2010数据库项目-SQL03006错误

Sql server VS 2010数据库项目-SQL03006错误,sql-server,visual-studio-2010,Sql Server,Visual Studio 2010,我在VS 2010中创建了一个新的SQL Server数据库项目,从名为“managers”的本地数据库导入了数据库对象和设置,并在尝试构建该项目时收到以下错误: SQL03006:视图:[dbo].[vw_mlFunds]具有对对象[Manager].[dbo].[mlFunds]的未解析引用 我不知道为什么这个视图完全限定一个表引用包含实际的数据库名称,我更希望不必更改sql,因为它是其他人的代码,而且从技术上讲并不错误。但我认为完全限定表名以包含数据库名称会让VS编译器感到困惑,因为它需要

我在VS 2010中创建了一个新的SQL Server数据库项目,从名为“managers”的本地数据库导入了数据库对象和设置,并在尝试构建该项目时收到以下错误:

SQL03006:视图:[dbo].[vw_mlFunds]具有对对象[Manager].[dbo].[mlFunds]的未解析引用


我不知道为什么这个视图完全限定一个表引用包含实际的数据库名称,我更希望不必更改sql,因为它是其他人的代码,而且从技术上讲并不错误。但我认为完全限定表名以包含数据库名称会让VS编译器感到困惑,因为它需要的是[dbo].[mlfunds],而不是[managers].[dbo].[mlfunds]。如何最好地解决这个问题?我可以在某处设置新的数据库名称变量/别名吗?或者我必须重构/修改sql才能编译它?提前感谢。

您需要为[managers]数据库创建另一个数据库项目,并让您的项目“引用”另一个项目。您可以在[managers]数据库上执行简单的反向工程步骤,将该数据库中的所有对象导入到新的VSDB项目中。请参阅。

实际上,代码似乎必须修改,因为这是不受支持的。在这篇文章中可以找到答案:


在创建项目并导入数据库后,我遇到了相同的错误。对我来说,问题是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

你能帮我澄清一下吗?当两个对象(基表和视图)都位于同一个[managers]数据库中时,我对引用的需要感到困惑。我认为[managed]是一个不同的数据库。如果视图使用数据库名称明确限定表名,那么视图定义在技术上是不正确的,因为项目可以在不同的数据库名称下部署,即使在部署后,它也可以用各种名称还原/复制/附加/快照,并且视图在所有这些场景中都是无效的。我认为原始开发人员无意中完全使用数据库名称限定表,我们可能最终修改视图脚本以删除数据库名称引用,但是视图的create脚本将在ssms中按原样运行,没有错误,并且在针对managers数据库运行时,它会将对managers的显式引用识别为对自身的引用。我同意这是一个草率的代码,但我暂时不想弄乱它,因为它需要测试。这就是为什么我试图弄清楚是否有办法解决这个问题。如果您连接了这个问题,但无法弄清楚为什么您的比较脚本仍在爆炸,请确保在初始的“选择源/目标架构”屏幕中设置“SQLCMD Variables”选项。