powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по SSIS
16 сообщений из 16, страница 1 из 1
Вопрос по SSIS
    #39839933
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, подскажите, пож-та.

Нужно через SSIS пакет настроить обновление таблицы - справочника. То есть нужно обновлять имеющиеся записи и добавлять отсутствующие.

Я так понимаю, что для этого можно использовать элемент Lookup. Вопрос, собственно корректно ли использовать данный элемент под указанную задачу и есть ли какие либо ограничения в использовании?
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39839943
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.Добрый день, подскажите, пож-та.

Нужно через SSIS пакет настроить обновление таблицы - справочника. То есть нужно обновлять имеющиеся записи и добавлять отсутствующие.

Я так понимаю, что для этого можно использовать элемент Lookup. Вопрос, собственно корректно ли использовать данный элемент под указанную задачу и есть ли какие либо ограничения в использовании?
Можно, так часто и делают.
Для небольшого потока вполне подходит, для интенсивных изменений лучше использовать push down processing. Материализовывать данные в постоянную или временную таблицу и мержить SQL командами (merge или insert/update)

Если будете пользоваться lookup-ом надо помнить несколько вещей
1. Для больших справочников отключать кеширование в lookup-е
2. Входящий поток должен быть уникальным
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39839952
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Помните только, что в случае использования SSIS обновления будут идти итеративно, для каждой записи свой UPDATE.
Если с точки зрения производительности это OK, то OK! :-)
Если же нет, то надо думать о какой-то BATCH LOAD логике.
Например
выгружать очередную порцию в промежуточную таблицу, а потом с ней соединяться в одном UPDATE

как предыдущем варианте, но использовать MERGE

генерить CUSTOM запрос, где очередной пакет в Table Value Constructor упакован и с ним уже UPDATE/INSERT или MERGE

возможны варианты с передачей JSON, XML или CUSTOM табличного типа данных
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39839953
Фотография Yuri Abele
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yuri Abele... то надо думать о какой-то BATCH LOAD логике ...
В SSIS этим не пользовался, но уверен, что для такого есть решения соронних поставщиков (я про расширения для SSIS)
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39839956
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex, для небольших потоков - это для каких?

И по п.2 - что имеется ввиду, что поток должен быть уникальным?
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39839957
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.msLex, для небольших потоков - это для каких?
Если у вас хотя бы 10-ки тысяч изменений в час, стоит задуматься.
Michail A.И по п.2 - что имеется ввиду, что поток должен быть уникальным?

Стандартный воркфлоу с lookup-ом:

1. Lookup: Проверяем через lookup наличие записи с ключом в базе и делим на два потока insert и update
2.1 Insert: Соответственно, вставляем запись
2.2 Update: Соответственно, обновляем запись


Проблема (а точнее особенность) в том, что эти компоненты работают асинхронно.
Если в Lookup придут две записи с одним ключом, отсутствующим в таргет таблице, есть не иллюзорный шанс, что первая из них еще не будет вставлена до проверки на lookup-е второй, а значит и вторая запись уйдет в insert потоки.
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840088
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex, нет ли примера, как реализуется поток update?
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840096
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.msLex, нет ли примера, как реализуется поток update?

Обычный OLE DB Command с параметризированным update
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840103
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex, вот именно параметризованный update интересует.

Как в данном update выбрать только те строки, в которых происходило изменение значений полей?
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840106
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A. Нужно через SSIS пакет настроить обновление таблицы - справочника. То есть нужно обновлять имеющиеся записи и добавлять отсутствующие.
Если позволяет версия, то иcпользуйте SQL Script и MERGE.
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840110
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.msLex, вот именно параметризованный update интересует.

Как в данном update выбрать только те строки, в которых происходило изменение значений полей?
обычный

Код: sql
1.
update dbo.ttt set ... where id = ?
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840119
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
msLex, а можно ли в рамках данного потока как нибудь сравнить записи, и произвести update только тех записей, в которых были изменения?
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840131
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A.msLex, а можно ли в рамках данного потока как нибудь сравнить записи, и произвести update только тех записей, в которых были изменения?
можно.

Например, "влоб" добавить
and (
field1 != ?
or filed2 != ?
...
)


если в полях допустимы null, добавить isnull(...)
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840149
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этом случае получаю ошибку "error at data flow task [ole db command [27]]: Parameters are not bound. All parameters in the SQL command must be bound to input columns.

Т.е. я так понимаю вопрос в том, что поставить в соответствие параметрам, которые возникают после добавлении данной секции (
and (
field1 != ?
or filed2 != ?
...
))
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840338
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Michail A., почитайте что означает назначение (привязка) параметров (Bound parameters)
У вас этого нет, отсюда и ошибка.
...
Рейтинг: 0 / 0
Вопрос по SSIS
    #39840405
Michail A.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQL2008,

можно чуть более подробно куда копать? пока не увидел применения.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по SSIS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]