Есть ли способ легко изменить имя сервера в нескольких пакетах SSIS программно?

Мы создаем несколько пакетов SSIS для миграции большой базы данных в рамках цикла выпуска. У нас может получиться около 5-10 пакетов SSIS.

Поскольку у нас есть 4 среды (dev, QA, staging, production и т. Д.), Есть ли эффективный способ изменить целевой сервер для каждого пакета SSIS, когда они проходят через разные серверные среды? В идеале может быть запущен сценарий, который будет принимать в качестве параметра необходимый сервер.


person alchemical    schedule 03.02.2010    source источник
comment
Это можно сделать разными способами: вручную, автоматически, через файлы конфигурации или даже программно. Тем не менее, ни один из них не может быть справедливо назван легким, особенно если вы еще не настроены для их использования и уж тем более не пытаетесь это сделать впервые. Из всех этих способов программный, вероятно, самый сложный.   -  person RBarryYoung    schedule 04.02.2010


Ответы (3)


Вы можете использовать файл конфигурации для хранения строк подключения для серверов. Затем, когда вы переходите из среды в среду, вы просто меняете файл конфигурации. Чтобы просто создать файл конфигурации, на панели управления вашего пакета
1) щелкните правой кнопкой мыши и выберите «Конфигурации пакета» из контекстного меню.
2) Установите флажок «Включить конфигурации пакета», если он еще не выбран,
3) затем нажмите кнопку «Добавить ...».
4) нажмите кнопку «Далее» в диалоговом окне,
5) затем добавьте имя файла конфигурации: и нажмите кнопку «Далее».
6) В представлении объектов , В разделе «Диспетчеры подключений» разверните свое соединение, затем разверните «Свойства» и установите флажок рядом с ConnectionString.
7) Затем нажмите «Далее»
8) затем закончите.

Теперь у вас есть XML-файл с именем, которое вы назвали на шаге 5 выше. Вы можете редактировать этот файл с помощью текстового редактора и изменять строку подключения для сопоставления с тем сервером, который вам нужен, перед каждым запуском.

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

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

person William Salzman    schedule 03.02.2010
comment
Любой из методов хранения конфигурации в SSIS проходит процесс, аналогичный описанному выше, только варианты, сделанные на каждом этапе, различны. Ваш выбор включает XML (описанный здесь), переменную среды, запись реестра, переменную родительского пакета или Sql Server. В Sql Server вам необходимо определить соединение для таблицы. - person William Salzman; 04.02.2010

Мы используем конфигурационную таблицу, в которой хранятся конфигурации для сервера. Но файлы конфигурации тоже работают. Нам нравится таблица, потому что мы составляем отчеты по метаданным пакета SSIS, и эти данные легче получить (вместе с множеством других данных, которые мы храним), когда они хранятся в таблице.

person HLGEM    schedule 03.02.2010
comment
Как пакет получает информацию из таблицы конфигурации во время выполнения пакета? - person alchemical; 04.02.2010
comment
Во время предварительного запуска при выполнении пакета ssis загружает информацию о конфигурации из того метода, который использовался для ее сохранения. Это верно для любого из методов хранения информации о конфигурации. Если вы используете метод таблицы, описанный здесь, вы можете обновлять таблицу с помощью sql между запусками для перехода из одной среды в другую. Если вы используете метод xml в другом ответе, вы можете заменить или отредактировать файл между запусками. - person William Salzman; 04.02.2010
comment
Когда мы используем таблицу, мы также используем переменную среды в качестве первой конфигурации. Он указывает на базу данных, где хранятся конфиги. - person HLGEM; 04.02.2010
comment
HLGEM - Да, это мой любимый метод настройки, который, как я слышал, называется косвенной настройкой. Для простоты решения этой конкретной проблемы я рекомендовал конфигурацию xml, но косвенное использование конфигурации SqlServer с переменной среды, содержащей строку подключения конфигурации, также будет работать. Если ваши среды находятся в разных сетях, непрямой вариант работает хорошо, но вы должны поддерживать переменные среды на своих серверах ssis (небольшая цена за гибкость). - person William Salzman; 04.02.2010

Ответ Уильяма Тодда Зальцмана охватывает большинство вопросов. Мне нужно добавить еще пару:

  • Убедитесь, что для свойства pacakge ProtectionLevel установлено значение DontSaveSensitive.
  • Если вы работаете с разными средами доставки, то таблица SQL Server в качестве источника конфигураций пакетов, возможно, не для вас, поскольку вам потребуется одна центральная база данных, содержащая все строки подключения для всех серверов.
  • Поработав с конфигурациями пакетов, полученными из реестра, вы должны знать, что эти параметры извлекаются из куста HKEY_CURRENT_USER. Это имеет значение, когда пакет запускается через задание агента SQL.
person James Wiseman    schedule 04.02.2010