Я создал пакет dtsx с помощью Sql Server Business Intelligence Development studio и выполняю его с помощью утилиты dtexec. Используя dtexec, я устанавливаю определенные свойства во время выполнения с помощью переключателя / set. Итак, моя команда выглядит примерно так:
dtexec /f "mypackage.dtsx" /set
\Package.Connections[Destination].Properties[UserName];myUserName
Это отлично работает, когда я запускаю его в своей локальной системе (той, на которой он был разработан). К сожалению, когда я копирую этот пакет в другую систему и пытаюсь выполнить ту же самую команду, я получаю следующую ошибку:
Warning: The package path referenced an object that could not be found:
\Package.Connections[Destination].Properties[UserName]. This occurs when an
attempt is made to resolve a package path to an object that cannot not be found.
В новой системе, в которую был перемещен пакет, установлен SSIS, и на ней работает та же версия Sql Server, что и в моей локальной системе (SP2). Возможно, я что-то не понимаю о предполагаемом использовании пакетов dtsx, но я действительно не понимаю, как / почему это происходит.





Вам потребуется создать служебную программу развертывания, если вы перемещаете пакет между машинами. Информация о вашем подключении зашифровывается с помощью ключа, специфичного для вашего компьютера.
Если вы перейдете к свойствам проекта в VS, выберите раздел служебной программы развертывания и установите для параметра CreateDeploymentUtility значение true. Это создаст утилиту развертывания в папке bin, затем вы можете скопировать все это на новый компьютер, запустить установщик, и все должно работать нормально.
Самый быстрый способ переместить пакеты между машинами и избежать подписания пакетов - следующий.
В Visual Studio с открытым пакетом выберите «Сохранить копию PackageName» как
Затем вы получите мастера. Самый простой вариант - просто выбрать хранилище файлов. Тогда в основании мастера вы увидите уровень защиты. Выберите «Зашифровать конфиденциальные данные паролем». Введите пароль.
На сервере, который вы хотите переместить, выберите «Импортировать пакет», и вам будет предложено ввести пароль. Введите его, и ваша информация о подключении будет корректно перенесена на новый сервер.
Определенно не лучшая практика, но это хороший метод для быстрого перемещения вещей с тестовых серверов.
В ваших свойствах потока управления есть свойство под названием «ProtectionLevel». Если вы установите для этого параметра значение «DontSaveSensitive», это может вызвать меньше головной боли при разработке и тестировании. Для производственных сценариев, когда безопасность является требованием, вам может потребоваться другое решение.
Эти шаги предназначены для создания файла конфигурации XML (.dtsConfig), который может хранить ваши конфиденциальные данные, такие как пароль строки подключения, без уровня защиты, который может затруднить перемещение пакета с одного компьютера на другой.
В этом примере предполагается, что у вас есть соединение OLE DB с базой данных SQL с именем MyDb.
Поток управления, свойство: установите для параметра ProtectionLevel значение DontSaveSensitive.
Поток управления, щелкните правой кнопкой мыши пустое пространство, чтобы открыть меню: щелкните «Конфигурация пакета».
Организатор конфигурации пакетов: установите флажок «Включить конфигурацию пакета»; нажмите "Добавить"
Мастер настройки пакета, выберите тип конфигурации: установите для параметра «Тип конфигурации» значение «Файл конфигурации XML»; выберите переключатель «Указать конфигурацию напрямую»; нажмите "Обзор ..."
Выберите Местоположение файла конфигурации, заполните «Имя файла»: [PackageName] .dtsConfig (легко, если та же папка и то же имя файла, что и сам пакет, только другое расширение); нажмите "Сохранить"
Мастер настройки пакета, выберите тип конфигурации: нажмите «Далее>»
Мастер настройки пакета, выберите «Свойства для экспорта»: просмотрите следующие узлы дерева и установите соответствующий флажок; нажмите "Далее>"
\ [PackageName] \ Connection Managers \ MyDb \ Properties \ Connection String
\ [PackageName] \ Connection Managers \ MyDb \ Properties \ Password
Мастер настройки пакетов, завершение работы мастера, нажмите «Готово».
Организатор конфигурации пакетов: нажмите «Закрыть»
Обозреватель решений: щелкните правой кнопкой мыши корневое дерево для меню, выберите «Добавить», «Существующий элемент ...», щелкните [PackageName] .dtsConfig, щелкните «Добавить»
Обозреватель решений: дважды щелкните \ Miscellaneous \ [PackageName] .dtsConfig, чтобы загрузить в редактор;
Главное меню: нажмите «Изменить», нажмите «Дополнительно», нажмите «Форматировать документ».
Просмотрите узел дерева XML: \ DTSConfiguration \ Configuration [Path = "\ Package.Connections [MyDb] .Properties [Пароль]"] \ ConfiguredValue; введите пароль к базе данных; сохраните файл
Проводник Windows: перейдите и дважды щелкните [PackageName] .dtsx
Запустите служебную программу пакета, конфигурацию, нажмите «Добавить», дважды щелкните [PackageName] .dtsConfig, нажмите «Выполнить»
Если требуется переместить .dtsx на другой компьютер, просто приложите к нему файл .dtsConfig. Надеюсь это поможет.
Ура, Ари.
Вот рекомендации MSDN по безопасности пакетов. Установка уровня защиты пакетов
хорошее решение, я так делал и раньше. это быстро и грязно.