VS2010数据库项目(SQL Server 2008)中存在SQL03006错误



当我试图在VS2010中为SQL Server 2008设置数据库项目时,我一直遇到错误"SQL03006-列xyz包含对对象的未解析引用。对象不存在或引用不明确,因为它可能引用以下任何对象…"

原始代码的一个示例如下:

CREATE VIEW [dbo].[vwSomeView]
AS
SELECT 
    CT.ID, 
    CT.UserName, 
    ST.Title
FROM
    SomeOtherDatabase.dbo.ComputerTable CT
JOIN
    SomeOtherDatabase.dbo.SoftwareTable ST ON
    CT.ID = ST.ComputerID

现在错误只涉及例如列CT.UserName,而不是CT.ID。我还添加了一个对应的数据库引用到"SomeOtherDatabase",并根据我在搜索解决方案时发现的几个帖子的建议更新了代码:

CREATE VIEW [dbo].[vwSomeView]
AS
SELECT 
    CT.ID, 
    CT.UserName, 
    ST.Title
FROM
    [$(SomeOtherDatabaseName)].dbo.ComputerTable CT
JOIN
    [$(SomeOtherDatabaseName)].dbo.SoftwareTable ST ON
    CT.ID = ST.ComputerID

我不明白的是,为什么CT表中的一列有问题,而另一列没有问题。当我查看数据库项目中的表定义时,一切似乎都很好,因为列在那里(正如预期的那样)。

我也不太确定一旦定义了表名,我是否可以用它们的别名来引用表名,也就是说,我在写"CT.ComputerID"而不是"$$(SomeOtherDatabaseName)].dbo.ComputerTable"时有问题吗(我不这么认为,但我一直遇到很多错误,现在我有点不知所措)。

任何指向正确方向的建议都将不胜感激,谢谢。

更新

实际错误消息如下:

SQL03006: View: [dbo].[vwSomeView] contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: [$(SomeOtherDatabaseName)].[dbo].[ComputerTable]::[ID] or [$(SomeOtherDatabaseName)].[dbo].[SoftwareTable]::[ID]"

G。

JOIN是ComputerTable.ID上的SoftwareTable .ComputerID到,这意味着在ComputerTable(CT别名)中没有ComputerID

除了ComputerTable.ID之外,您真的有ComputerTable.ComputerID列吗?SoftwareTable上的foriegn密钥的唯一密钥是哪个?

[$(SomeOtherDatabaseName)]位是转移注意力,我认为

编辑:

您的错误是由SQL Server查找数据库名称[$(SomeOtherDatabaseName)] 引起的

由于某种原因,VS没有更正它。

相关内容

最新更新