Генерация первичного ключа с ненулевым индексом (поток данных SSIS)

#sql-server #visual-studio #ssis

#sql-сервер #visual-studio #ssis

Вопрос:

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

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

Комментарии:

1. есть ли какая-то причина, по которой вы просто не используете столбец identity?

2. Оказывается, я неверно истолковал некоторые ограничения в скрипте; между комментарием Майка и сном на нем я справился просто отлично.

Ответ №1:

Общеизвестно, что подобные вещи сложно выполнить в SSIS, поэтому я стараюсь этого избегать. Вам необходимо:

…приготовьтесь…

-создайте переменную в вашем пакете SSIS для хранения начального значения

-создайте SQL-задачу с параметром, сопоставленным с этой переменной, с направлением вывода и запросом что-то вроде «SET ? = (ВЫБЕРИТЕ MAX (IDValue) ИЗ таблицы)» — знак вопроса является заполнителем для параметра, который сопоставляется с переменной

-используйте переменную в вашем потоке данных — возможно, с преобразованием производного столбца

Надеюсь, это поможет…