SSIS возвращает неверную ошибку



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



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



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



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



Обновить



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



Введите описание изображения здесь

616   3  

3 ответов:

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

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

Пример выполнения задачи 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, затем дважды щелкните задачу с ошибкой, и любая ошибка отсутствующего поля должна исчезнуть (теперь, когда столбец существует). После этого вы можете сохранить пакет и выйти.

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

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

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

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

Comments

    Ничего не найдено.