Как исправить ошибку, возникающую при выполнении пакета, развернутого на сервере? - PullRequest
1 голос
/ 04 ноября 2008

Я создал пакет 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, но я действительно не понимаю, как / почему это происходит.

Ответы [ 5 ]

6 голосов
/ 15 января 2009

Этот шаг предназначен для создания файла конфигурации XML (.dtsConfig), в котором могут храниться ваши конфиденциальные данные, такие как пароль вашей строки подключения, без уровня защиты, который может затруднить перемещение пакета с одного компьютера на другой. .

В этом примере предполагается, что у вас есть подключение OLE DB к базе данных SQL с именем MyDb.

  1. Поток управления, Свойство: установите «ProtectionLevel» в «DontSaveSensitive»

  2. Поток управления, щелкните правой кнопкой мыши пустое место, чтобы открыть меню: нажмите «Конфигурация пакета»

  3. Организатор настройки пакета: отметьте галочкой «Включить настройку пакета»; нажмите «Добавить»

  4. Мастер настройки пакета, выберите тип конфигурации: установите для «Тип конфигурации» значение «Файл конфигурации XML»; выберите переключатель «Указать конфигурацию напрямую»; нажмите "Обзор ..."

  5. Выберите местоположение файла конфигурации, заполните «Имя файла»: [PackageName] .dtsConfig (легко, если та же папка и то же имя файла, что и у самого пакета, только другое расширение); нажмите «Сохранить»

  6. Мастер настройки пакета, выберите тип конфигурации: нажмите «Далее>»

  7. Мастер настройки пакета, выберите Свойства для экспорта: перейдите по следующим узлам дерева и отметьте его флажок; нажмите «Далее>»

    \ [PackageName] \ Диспетчеры подключений \ MyDb \ Properties \ Строка подключения

    \ [PackageName] \ Диспетчеры соединений \ MyDb \ Свойства \ Пароль

  8. Мастер настройки пакета, мастер завершения, нажмите «Готово»

  9. Организатор конфигурации пакета: нажмите «Закрыть»

  10. Обозреватель решений: щелкните правой кнопкой мыши корневое дерево меню, выберите «Добавить», «Существующий элемент ...», нажмите [PackageName] .dtsConfig, нажмите «Добавить»

  11. Solution Explorer: дважды щелкните \ Miscellaneous \ [PackageName] .dtsConfig для загрузки в редактор;

  12. Главное меню: нажмите «Изменить», нажмите «Дополнительно», нажмите «Формат документа»

  13. Обход узла дерева XML: \ DTSConfiguration \ Configuration [Path = "\ Package.Connections [MyDb] .Properties [Password]"] \ ConfiguredValue; введите пароль базы данных; сохранить файл

  14. Проводник Windows: перейдите и дважды щелкните [PackageName] .dtsx

  15. Выполнить утилиту пакета, Конфигурация, нажмите «Добавить», дважды щелкните [PackageName] .dtsConfig, нажмите «Выполнить»

Когда необходимо переместить .dtsx на другой компьютер, просто сопровождайте его .dtsConfig. Надеюсь, это поможет.

Приветствия, Ари.

1 голос
/ 27 ноября 2008

Самый быстрый способ переместить пакеты между компьютерами и избежать подписи пакетов заключается в следующем.

В Visual Studio с открытым пакетом выберите «Сохранить копию PackageName» как

Затем вы получаете волшебника. Проще всего выбрать хранилище файлов. Тогда у основания мастера вы увидите уровень защиты. Выберите Зашифровать конфиденциальные данные с помощью пароля. Введите пароль.

На сервере вы хотите переместить его, чтобы выбрать Импортировать пакет, и вам будет предложено ввести пароль. Введите его, и информация о вашем соединении будет правильно перенесена на новый сервер.

Определенно не лучшая практика, но это хороший метод для быстрого перемещения по тестовым серверам.

1 голос
/ 07 января 2009

В ваших свойствах потока управления есть свойство, называемое ProtectionLevel. Если вы установите для этого параметра значение «DontSaveSensitive», это может привести к уменьшению головной боли при выполнении разработки и тестирования. Для производственных сценариев, где требуется безопасность, вам может потребоваться найти другое решение.

1 голос
/ 05 ноября 2008

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

Если вы перейдете к свойствам проекта в VS, выберите раздел утилиты развертывания и установите для параметра CreateDeploymentUtility значение true. Это создаст утилиту развертывания в папке bin, затем вы сможете скопировать все это на новый компьютер, запустить установщик, и все должно работать нормально.

0 голосов
/ 21 октября 2011

Вот рекомендации MSDN по безопасности пакетов. Установка уровня защиты пакетов

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