Intereting Posts
Размер запроса запросов SQL Server Получите все за исключением базы данных SQL, используя Entity Framework Запрос, который много читает, но план в порядке Автоматически создает ли внешний ключ индекс? недокументированные стили CONVERT – дата и время 23 Количество подсчетов SQL Как отсортировать столбец с разделителями-запятыми в SQL Нужен умный способ получить заказы от всех магазинов, в то время как каждый магазин находится в другой базе данных client.pk_name присоединение транзакций.fk_name vs. customer.pk_id присоединение транзакций.fk_id Удаление и разделение данных на несколько столбцов в инструкции select как выполнить .sql-файлы с параметром Инструменты и методы для оптимизации запроса LINQ to SQL Как подсчитать ежедневные продажи продавца и показать даты в виде столбца в SQL QUERY Как сделать IF … ELSE, как программирование в SQL Server 2008 передать параметр null в запрос SQL-сервера

Игнорировать повторяющиеся записи в назначении SSID OLE DB

Я использую назначение OLE DB для заполнения таблицы значением из веб-службы.

Пакет планируется запустить в начале AM для деятельности предыдущего дня. Однако, если это не удается, пакет можно выполнить вручную.

Я обеспокоен тем, что оператор выбирает диапазон дат, который перекрывает существующие данные, весь пакет не будет проверен.

Я бы хотел:

  • ВСТАВЛЯЙТЕ отсутствующие значения (работает как ожидалось, если нет дубликатов)
  • игнорировать дубликаты; не вызывать отказ пакета; создать исключение, которое может быть захвачено журналом приложений Windows (зарегистрировано как предупреждение)
  • собирать количество успешно вставленных записей и количество дубликатов

Если это имеет значение, я использую Data access mode = Table or view - fast load и

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

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

Solutions Collecting From Web of "Игнорировать повторяющиеся записи в назначении SSID OLE DB"

Вот как я это сделаю:

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

  • Вставьте все строки в промежуточную таблицу.

  • Запустите хранимую процедуру, которая использует SQL для импорта записей из промежуточной таблицы в конечную таблицу назначения, ГДЕ, записи в таблице назначения еще не существуют.

  • Соберите нужные метаданные и делайте с ними все, что хотите.

  • Очистите столовый стол для следующего использования.

(Эти последние 3 шага будут выполнены в одной и той же хранимой процедуре).

Это не особенность.

Если вам не нужна ошибка (дубликаты), вам необходимо защититься от нее – так же, как и на вашем любимом языке. Вместо того, чтобы полагаться на обработку ошибок, вы проверяете наличие ошибки, вызывающей вещь (Lookup Transform, чтобы идентифицировать существование строки в пункте назначения), а затем отфильтровывайте дубликаты (перенаправить No Match Output).

Техническое решение, которое вы абсолютно не должны выполнять

Измените режим доступа из «Таблица или Имя вида – Быстрая загрузка» на «Таблица или Просмотр имени». Это изменяет метод вставки из операции на основе массива / набора в однопользовательские вставки. Вставляя одну строку за раз, это позволит пакету SSIS оценивать успех / сбой сохранения каждой строки. Затем вам нужно перейти в расширенный редактор, снимок экрана и изменить параметр «Ошибка» с «Компонент Ignore Failure чтобы Ignore Failure

Это решение не должно использоваться, так как оно обеспечивает низкую производительность, создает ненужную рабочую нагрузку и может маскировать другие ошибки сохранения за пределами «дубликатов» – например, нарушения ссылочной целостности