Доступ к нескольким диспетчерам соединений в SSIS 2012 Execute SQL Task

У меня есть проект SSIS 2012, который состоит из одной задачи «Выполнение SQL». Пакет должен быть развернут на SQL Server, чтобы он мог работать независимо от вмешательства пользователя. T-SQL обращается к двум разным серверам SQL, например:

INSERT INTO Server1.MyDatabase1.dbo.MyTable1
SELECT * FROM Server2.MyDatabase2.dbo.MyTable2 T2
WHERE T2.MyField2 NOT IN (SELECT MyField1 FROM Server1.MyDatabase1.dbo.MyTable1)

Это прекрасно работает, но, очевидно, не очень портативно. Я хотел бы создать два диспетчера соединений для Server1 и Server2 и ссылаться на значения диспетчеров соединений в T-SQL. Диспетчеры соединений также содержатся в Project.params, поэтому вместо этого я мог бы использовать Project.params. Во всяком случае, можно ли ссылаться на диспетчеры соединений или Project.params в задаче «Выполнение SQL»? Или я могу создать из них переменные и ссылаться на переменные в задаче «Выполнение SQL»? Или мне нужно сделать это совершенно по-другому, например, получить оба набора данных с помощью задач потока данных, а затем обработать их?


person Melanie    schedule 04.06.2015    source источник


Ответы (1)


Один из способов сделать это — использовать переменные:

  • Variable1: содержит имя Server1
  • Variable2: содержит имя Server2
  • Переменная3: содержит весь ваш оператор SQL и построен с использованием переменных 1 и 2.

Затем ваша задача выполнения SQL использует переменную 3 в качестве источника.

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

person Tab Alleman    schedule 04.06.2015
comment
Спасибо! Так что мне придется изменить значения переменных, если я хочу выполнить развертывание на другом наборе серверов, верно? Я пытаюсь избежать этого, если это возможно. - person Melanie; 04.06.2015
comment
Вы можете установить переменные с помощью параметров или файлов .config, которые находятся на разных серверах, чтобы вам не требовались разные версии пакета на каждом сервере. То, как вы сформулировали это в своем вопросе, звучит так, будто решение, позволяющее использовать параметры для создания переменных, на которые вы можете ссылаться в своей задаче «Выполнение SQL», было бы приемлемым. - person Tab Alleman; 04.06.2015
comment
Я добавил дополнительную информацию к своему первоначальному вопросу: этот пакет должен быть развернут на SQL Server и работать независимо от любого взаимодействия с пользователем. И когда я говорю «Параметр», я имею в виду Project.params, созданные в SSIS 2012, которые представляют различные соединения проекта, не сопоставление параметров в задаче «Выполнение SQL». Что я хочу сделать, так это сопоставить переменные с Project.params, поэтому мне нужно изменить только последний (что я бы сделал в любом случае), когда я перемещаю пакет на другой набор серверов. Спасибо! Но я рассмотрю ваше предложение по файлу конфигурации, спасибо! - person Melanie; 05.06.2015