Как использовать 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 четко говорится, что
Не сохранять конфиденциальные: предотвращает сохранение свойств, помеченных как конфиденциальные, с пакетом и, следовательно, делает конфиденциальные данные недоступными для других пользователей.