Ошибка SQL03006 в проекте базы данных VS2010 (SQL Server 2008) - PullRequest
1 голос
/ 30 мая 2011

Когда я пытаюсь настроить проект базы данных для SQL Server 2008 в VS2010, я продолжаю сталкиваться с ошибкой "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.

1 Ответ

0 голосов
/ 30 мая 2011

JOIN - это SoftwareTable .ComputerID на ComputerTable.ID, что подразумевает, что в ComputerTable (псевдоним CT) нет ComputerID столбца

Вы действительно есть столбец ComputerTable.ComputerID в дополнение к ComputerTable.ID?Какой уникальный ключ для внешнего ключа на SoftwareTable?

Бит [$(SomeOtherDatabaseName)] - это красная сельдь, я думаю

Редактировать:

Ваша ошибка вызванаSQL Server ищет имя базы данных [$(SomeOtherDatabaseName)]

По какой-то причине VS не исправляет это.

...