SSIS, как установить строку подключения динамически из файла конфигурации - PullRequest
40 голосов
/ 23 марта 2010

Я использую службы интеграции SQL Server (SSIS) в SQL Server Business Intelligent Development Studio.

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

Это означает, что в диспетчере соединений OLEDB строка соединения должна изменяться динамически.Эта строка подключения должна быть взята из файла конфигурации / XML / flat.

Я прочитал, что могу использовать переменные и выражения для динамического изменения строки подключения.Но как мне прочитать значение строки подключения из файла config / XML / flat и установить переменную?

Эту часть я не могу выполнить.Это правильный путь для достижения этого?Можем ли мы добавить файлы web.config в проект служб SSIS?

Ответы [ 5 ]

30 голосов
/ 30 января 2012

Сначала добавьте переменную в ваш пакет служб SSIS (Package Scope) - я использовал FileName, OleRootFilePath, OleProperties, OleProvider.Тип для каждой переменной - «строка».Затем я создаю файл конфигурации (выберите каждую переменную - значение) - заполните значения в файле конфигурации - например: для OleProperties - Microsoft.ACE.OLEDB.12.0;для OleProperties - Excel 8.0; HDR =, OleRootFilePath - путь к файлу Excel, имя_файла - имя_файла

В диспетчере соединений - я затем динамически устанавливаю свойства-> Выражения-> выражение строки соединения, например:

"Provider=" + @[User::OleProvider] + "Data Source=" + @[User::OleRootFilePath]
+ @[User::FileName]  + ";Extended Properties=\"" + @[User::OleProperties] + "NO \""+";"

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

26 голосов
/ 23 марта 2010

Некоторые параметры:

  1. Вы можете использовать Execute Package Utility для изменения источника данных перед запуском пакета.

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

  3. Вы можете использовать конфигурацию пакета SSIS XML файл.Вот прогулка по .

  4. Вы можете сохранить свои конфигурации в таблице базы данных.

10 голосов
/ 23 марта 2010

Вот некоторые сведения о механизме, который вы должны использовать, который называется Конфигурации пакетов: Общие сведения о конфигурациях пакетов служб Integration Services . В статье описаны 5 типов конфигураций:

  • XML-файл конфигурации
  • Переменная окружения
  • Запись в реестре
  • Переменная родительского пакета
  • SQL Server

Вот пошаговое руководство по настройке конфигурации в диспетчере соединений: Конфигурация пакета служб SSIS служб интеграции SQL Server - я действительно понимаю, что используется переменная среды для строки соединения (не очень хорошая идея), но основы идентичны использованию файла XML. Единственный шаг (и), который необходимо изменить в этом пошаговом руководстве, - это тип конфигурации, а затем путь.

2 голосов
/ 02 февраля 2015

Перейти к Свойства пакета-> Конфигурации-> Включить конфигурации пакета-> Добавить-> XML-файл конфигурации-> Указать файл dtsconfig-> Нажмите кнопку Далее-> В свойствах OLEDB отметьте строку подключения-> Отображается значение строки подключения-> нажмите кнопку «Далее» и пакет будет готов.

Вы также можете добавить переменную окружения в этом процессе

0 голосов
/ 04 января 2017

Эти ответы правильные, но старые и работают на Depoloyement Package Model.Что мне действительно нужно, это изменить имя сервера, имя базы данных диспетчера соединений, и я нашел это очень полезным:

https://www.youtube.com/watch?v=_yLAwTHH_GA

Лучше для людей, использующих SQL Server 2012-2014-2016... с Deployment Project Model

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...