Проблема с ошибкой служб SSIS (команда Lookup и OLE DB) - PullRequest
0 голосов
/ 15 декабря 2010

Я получаю сообщение об ошибке с пакетом служб SSIS, которое я не знаю, как исправить.Я чувствую, что мне нужно дать представление о том, что я пытаюсь сделать, чтобы помочь вам понять:

Я использую базу данных источника OLE DB (SRC DB), и входные данные из этого выводятся в Lookup(DEST DB).Я проверяю, существует ли поле в базе данных SRC в базе данных DEST.В моем случае поле, которое я проверяю, называется inkexID, который представляет собой INT NOT NULL и является составным первичным ключом вместе с полем ID.

Поиск проверяет, существует ли inkexID, который существует в DB SRCсуществует в DEST DB.Если он не существует, он вставляет его и 3 других поля в БД DEST, если он существует, он просто обновляет 1 поле в БД DEST.

Моя проблема заключается в следующем: когда дело доходит до поиска,он проверяет inkexID по двум таблицам и видит, что совпадения нет, , но компонент не может выполнить .Кажется, он не отправляет никаких сообщений об ошибках (что необходимо для вызова начальной команды вставки OLE DB).Если я установлю конфигурацию ошибок для перенаправления строк или игнорирования ошибки, произойдет сбой при вставке .Это дает мне ошибку о нарушении схемы базы данных, хотя поле, которое я пытаюсь вставить, - 12345.

Я удалил поле в качестве первичного ключа и установил его, чтобы разрешить пустые значения, поэтому, когда я запустил его сноваЯ был удивлен, увидев, что он пытается вставить NULL в поле, хотя значение в базе данных SRC равно 12345.

Кажется, что ничего не выводится из Lookup .Кто-нибудь может помочь с тем, почему из поиска ничего не выйдет ???

Очень ценится, Цянь

Ответы [ 2 ]

0 голосов
/ 15 декабря 2010

Я выяснил, в чем была ошибка:

Я настроил поле inkexID в SRC DB для поиска inkexID из DEST DB. Однако я случайно установил галочку и установил столбец из SRC DB, чтобы заменить inkexID в DEST DB. Я просто снял галочку и установил отношения.

РЕЗУЛЬТАТ !!! Теперь он проверяет inkexID и, если он существует в DEST DB, просто обновляет время lastUpdated с текущим временем, в противном случае он вставляет правильный inkexID, текущее время как dateAdded и dateUpdated, а statusID как активный.

Ура!

0 голосов
/ 15 декабря 2010

Используйте SQL Server Profiler для запуска трассировки на сервере.

Запустите трассировку, затем выполните пакет. Трассировка профилировщика захватит все фактические команды T-SQL, которые отправляются на сервер базы данных. Затем вы можете скопировать каждую команду в окно редактора запросов, выполнить и просмотреть набор результатов, а также посмотреть план выполнения для настройки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...