Как использовать DontSaveSensitive и XML-файл конфигурации при разработке пакета служб SSIS

Возможно ли установить для ProtectionLevel пакета служб SSIS значение DontSaveSensitive и использовать строку подключения с паролем из файла конфигурации во время разработки пакета в Visual Studio?

У меня есть пакет, например Package1 с ProtectionLevel = DontSaveSensitive. Этот пакет использует соединение из диспетчера соединений, например Connection1.

Для Package1 включена конфигурация с использованием файла конфигурации file1.dtsConfig с указанной строкой соединения. Эта строка подключения содержит пароль:

<DTSConfiguration>
    <DTSConfigurationHeading>
        <DTSConfigurationFileInfo GeneratedBy="..." GeneratedFromPackageName="..." GeneratedFromPackageID="..." GeneratedDate="20.3.2013 12:08:27"/>
    </DTSConfigurationHeading>
    <Configuration ConfiguredType="Property" Path="\Package.Connections[Destination].Properties[ConnectionString]" ValueType="String">
        <ConfiguredValue>Data Source=.;Password=Password123;User ID=MyUser;Initial Catalog=Catalog;Provider=SQLNCLI10.1;Persist Security Info=True;Auto Translate=False;</ConfiguredValue>
    </Configuration>
</DTSConfiguration>

Теперь при открытии соединения из диспетчера соединений в Visual Studio текстовое поле для пароля остается пустым, а пакет не выполняется. Почему не был использован пароль, указанный в строке подключения в файле конфигурации file1.dtsConfig?

3 ответа

Решение

Наконец мы нашли способ, как это сделать:

  • Измените ProtectionLevel на DontSaveSensitive
  • Создать конфигурационный файл со строкой подключения
  • Вручную отредактируйте этот файл конфигурации: добавьте пароль в строку подключения на случай, если вы подключитесь с проверкой подлинности SQL Server

Затем пакет служб SSIS загрузит строку подключения с паролем из файла конфигурации даже в Visual Studio. В диалоге соединения с менеджером соединений пароль не будет показан, но пакет запускается с использованием строки соединения из конфигурации.

Это также относится к случаю, когда пакет сначала был настроен на использование EncryptSensitiveWithUserKey, а затем был изменен на уровень защиты DontSaveSensitive. Вы должны вручную отредактировать.conmgr-файл, удалить элемент DTS:Password и поместить пароль в строку подключения, как мудро написал пользователь dee выше.

Служба SSIS примет строку подключения из Config File только во время runtime. Даже если вы отметите флажок Save my Password SSIS не сохранит значение пароля. Этот параметр действует только во время BIDS session, Поэтому в следующий раз, когда вы откроете пакет с помощью BIDS, снова вам нужно ввести учетные данные в Visual Studio иначе пакет не будет compile, Но пакет всегда будет выполняться правильно во время run time если вы указали connection string в config file,

В соответствии с MSDN четко говорится, что

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

Другие вопросы по тегам