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

У меня есть пакет, который подключается к SourceDB1 и выполнить оператор обновления, который обновляет DestDB2. Теперь у меня есть много таких исходных и целевых БД, которые имеют похожую структуру. Для этого у меня есть для каждого контейнера цикла, в котором находится задача выполнения SQL. Теперь, так как соединение с source DB меняется, я создал переменную с именем SourceConnString, Аналогично, запрос на обновление также находится в переменной с именем UpdateVariable, я создал UpdateVariable потому что источник и назначение две разные базы данных.

Теперь мне нужно сохранить количество записей, которые каждый раз обновляются в задаче execute sql. Количество записей должно быть вставлено в таблицу или плоский файл, в зависимости от того, что легко.

Я видел учебники, как это сделать, не используя обновление через переменную. Есть ли способ, которым мы могли бы вернуть количество строк в моей ситуации.

3 ответа

Решение

Я сделал следующее. Создается новая переменная " Newupquery ", и под фрагментом кода находится значение, назначенное этой переменной и используемое в задаче execute SQl.

DECLARE @UpdateRowCnt INT;
update countcheck
set [Base Unit of Measure] = 'PCS-1'
where [Base Unit of Measure] = 'PCS';
SELECT @UpdateRowCnt=@@ROWCOUNT;
Select @UpdateRowCnt

Вышеуказанная задача выполнения SQl выполняется, и для набора результатов устанавливается переменная " UpdateRowCount ".

Следующим шагом является еще одна задача "Выполнение SQL", которая вставляет значение переменной UpdateRowCount в таблицу журнала на промежуточном сервере. Значение переменной UpdateRowCount было передано оператору вставки с использованием параметра в задаче "Выполнение SQl".

Вы можете использовать запрос Выбрать с @@ROWCOUNT после запроса UPDATE, как показано ниже:

UPDATE SomeTable Set SomeColumn = SomeValue;

SELECT @@RowCount as NumberOfAffectedRecords

И используйте ResultSet Single Row, чтобы получить значение.

Следующая статья содержит пошаговое руководство

Вы можете использовать свойство ExecValueVariable, в разделе " Выполнение задачи SQL" хранится количество записей, затронутых командой SQL. Вы должны указать имя переменной в свойстве ExecValueVariable или выбрать его из раскрывающегося списка, как показано ниже.

Другие вопросы по тегам