2013-06-01 1 views
0

Я использую SQL Server 2008 и пытаюсь написать запрос в задаче потока данных SSIS для чтения данных из одной базы данных на основе набора результатов из другой БД.Фильтрация перед соединением, чтобы избежать ошибки привязки «нескольких частей»

У меня есть несколько таблиц A, B, C, D, E и т. Д., И я пытаюсь написать выбор, который объединяет эти таблицы и получает данные после фильтра. Я получаю «из нескольких частей Идентификатор не может быть связан» ошибка на следующем запросе

SELECT 
A.1 as A1, 

A.2 as A2, 

A.3 as A3, 

B.1 as B1, 

(Select C.1 from C 

     left join cc on c.2 = cc.2 

     where C.x = A.x) as C1, 

(Select D.1 from D where D.x = A.x) as D1, 

E.4 as E4 

FROM A 

left join B on B.Y = A.Y 

inner join C on C.Y = A.Y 

inner join D on D.Y = C.X 

left join E on E.Y = D.Z AND E.Z = 'ZZZZ' 

WHERE A.P = ? 

Общая структура запроса, как указано выше, и запрос работает нормально, если я полностью удалить, где положение или дать простой "WHERE A.P = 'PPPP'". Он выглядит достаточно простым, и я не использую никаких данных из подзапросов в предложении where. Что я делаю не так?

+0

Являются ли эти два базы данных на том же SQL Server? Где именно вы получаете ошибку? когда вы его просматриваете? Когда вы запустите его? Когда вы определяете параметры? Вы успешно определили параметры для этого запроса? –

+0

В процессе дезинфекции запроса на публикацию вы, скорее всего, случайно удалили проблему с кодированием, потому что нет ничего плохого в этом запросе, если все таблицы и столбцы существуют. –

ответ

0

Эта ошибка означает, что ссылка не может быть привязана к объекту. Тем не менее, это не относится к части столбца выражения, просто части до этого.

Итак, если P не является столбиком в A, то A.P генерирует ошибку, такую ​​как «Column not found». Если A не определен в пункте from, то A.P даст вам `многосекционного идентификатор не найдена ошибка»

Частой причиной злоупотребляет псевдоним Если у вас есть такой код:..

from TableA a 
where TableA.col . . . 

Тогда вы получите сообщение об ошибке. Хотя TableA в разделе from, он известен в запросе по его псевдониму A, а не по имени таблицы. Это также может произойти из-за того, что вы ошибочно указали имя таблицы, имя схемы, базу данных имя или имя сервера в выражении.

+0

Спасибо за ваши комментарии. Прочитав немного больше об этой проблеме, вместо того, чтобы использовать sql-команду в SSIS и передать параметр, я решил построить весь sql в задаче скрипта и использовать sql по команде или переменной. Я смог передать параметр сценарию и при необходимости добавить его в свой запрос. Цените все свои предложения. –

+0

@IKONOSI. , , У меня есть предвзятость для SQL-скриптов по SSIS. –

Смежные вопросы