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