SSIS возвращает неверную ошибку - PullRequest
0 голосов
/ 30 мая 2018

Я создал пакет служб SSIS, который создал таблицу MyTable в SQL Server со столбцом BaseVariantVersionID.Программа сначала вставляет данные в эту таблицу.

В конце пакета я должен удалить столбец BaseVariantVersionID из таблицы.

Первая отладка в порядке.Но при второй попытке SSIS возвращает ошибку проверки.Это не позволяет воссоздать таблицу с BaseVariantVersionID, потому что на следующем шаге пакет не может сделать вставку в столбец, который сейчас не представлен.

Может быть, вы знаете какое-то свойство, чтобы отключить текущую проверку БД?

Обновление

Я опускаю столбец после всех шагов.И на первом шаге я воссоздал БД с колонкой.Но система возвращает ошибку - похоже, она использует существующую таблицу для проверки.

enter image description here

Ответы [ 3 ]

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

Для задачи «Выполнение SQL» вы можете установить для BypassPrepare значение True.Иногда это позволит вам спроектировать и создать пакет, который не проверяется во время разработки, но проверяется нормально во время выполнения.

Но я должен подвергнуть сомнению необходимость создания столбцов и таблиц во время выполнения.Вы уверены, что вам нужно это сделать?Это более типичный вариант использования SSIS для перемещения данных в существующих структурах таблиц, а не для их создания во время выполнения.

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

Это может быть несколько вопросов, о которых я могу думать.

Вы должны полностью удалить таблицу, если она уже существует, до ее создания в начале пакета.

Пример Выполнить задачу SQL:

IF OBJECT_ID('MyTable', 'U') IS NOT NULL
    DROP TABLE MyTable
GO

CREATE TABLE MyTable (etc...) GO
ALTER TABLE MyTable ADD COLUMN (etc...) GO

Во-вторых, выможно установить DelayValidation = True в окне свойств задачи потока данных (это обычно справа внизу после нажатия задачи потока данных в области дизайна).Это задерживает проверку до времени выполнения.

Если в данный момент у вас есть ошибка отсутствующего поля, вы можете добавить столбец вручную в SQL Server Management Studio, а затем дважды щелкните задачу с ошибкой и любым отсутствующим полемошибка должна исчезнуть (теперь, когда столбец существует).После этого вы можете сохранить пакет и выйти.

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

Если я правильно прочитал ваше описание, вы отбрасываете столбец на первом проходе, а затем получаете ошибку, пытаясь воссоздать таблицу на втором проходе?Вы получите сообщение об ошибке при запуске # 2, если попытаетесь создать уже существующую таблицу, даже если в ней нет «SomeColumn».

Вам нужно будет удалить таблицу, если вы 'Вы захотите воссоздать его или изменить свой код, чтобы добавить столбец обратно, если таблица существует.

...