Как исправить ошибку, возникающую при выполнении пакета, развернутого на сервере?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
12 149
5

Ответы 5

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

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

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

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

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

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

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

хорошее решение, я так делал и раньше. это быстро и грязно.

Sheehan Alam 19.01.2009 20:28

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

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

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

  1. Поток управления, свойство: установите для параметра ProtectionLevel значение DontSaveSensitive.

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

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

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

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

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

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

    \ [PackageName] \ Connection Managers \ MyDb \ Properties \ Connection String

    \ [PackageName] \ Connection Managers \ MyDb \ Properties \ Password

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

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

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

  11. Обозреватель решений: дважды щелкните \ Miscellaneous \ [PackageName] .dtsConfig, чтобы загрузить в редактор;

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

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

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

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

Если требуется переместить .dtsx на другой компьютер, просто приложите к нему файл .dtsConfig. Надеюсь это поможет.

Ура, Ари.

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

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