Хобрук: Ваш путь к мастерству в программировании

Описание: компонент MyDataFlowOLEDBSourceComponent (10250) не прошел этап предварительного выполнения и возвратил код ошибки 0xC0202009.

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

Это пакет SQL Server 2008, который подключается к базе данных SQL Server 2008 R2. Конфигурация осуществляется через таблицу ssisconfig, и она определяет, какой сервер использовать, через переменную среды.

Рассматриваемый компонент использует хранимую процедуру. В процедуре все поля явно приводятся к тому же типу данных таблицы, в которой данные также размещаются. Проц работает нормально сам по себе. Это относительно сложный процесс с двумя табличными переменными и CTE.

Я не могу запустить его со своего локального компьютера в prod, и dev не выходит из строя. Если я открою пакет prod SSIS, когда для меня задана переменная среды, которую использует владелец задания, я не получу ошибку проверки этого компонента. ValidateExternalMetadata имеет значение true для этого компонента. Однако для всего пакета для параметра «Задержка проверки» установлено значение «Истина». Я получаю ошибку проверки, которую можно было бы ожидать в задаче с использованием переменной, которая устанавливается динамически в более ранней задаче. Эта ошибка, однако, на много-много шагов позже, чем шаг, на котором она в настоящее время терпит неудачу.

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

У меня нет идей, на что еще посмотреть. Если среда не изменилась, фактический код не изменился и данные выглядят правильно, что остается попробовать?

20.08.2015

  • Вы запускаете этот пакет через SQL Agent? 21.08.2015
  • Поэтому, пожалуйста, загляните туда: blogs.msdn.com/b/dataaccesstechnologies/archive/2009/11/10/ и найдите свою ошибку 0xC0202009, вы увидите что-то, связанное с безопасностью временной папки агента SQL. 21.08.2015
  • Проблема не связана с авторизацией. Пакет принадлежит той же учетной записи службы, которая запускает сотни пакетов на нескольких серверах. Другие пакеты, ссылающиеся на те же базы данных на этом сервере, работают нормально. 21.08.2015
  • Длинный выстрел, но у нас была аналогичная проблема, на самом деле то же самое сообщение об ошибке, после нескольких недель устранения неполадок мы обнаружили, что вход в учетную запись пользователя, под которой выполнялось задание, имел поврежденное сопоставление с пользователем базы данных. Недавно мы обновили сервер и использовали sp_help_revlogin для перемещения всех логинов. По-видимому, это повредило один из SID. Удаление и повторное создание логина/пользователя устранило проблему. Я тоже потратил много дней, сосредоточившись на проверке типов данных и хранимых процессов. 24.08.2015
  • @Rthomas, эта же учетная запись службы успешно выполняла другие задания, идущие к тем же базам данных? 24.08.2015
  • Да, но это потому, что права на эти области базы данных можно было установить другими способами, например членством в группе. Весь пакет был в беспорядке. 25.08.2015
  • Можете ли вы опубликовать полную информацию об ошибке? И пакет SSIS, и агент SQL из журнала? Если вы не ведете журнал, сначала включите его и попробуйте проверить его по полной информации об ошибке. 27.08.2015

Ответы:


1

Поскольку я прокомментировал подробную информацию об ошибке, вы можете попробовать ссылку ниже от Microsoft:

Отладка пакета SSIS при вызове из агента

Немного информации по ссылке:

Причины, по которым пакет мог не работать, следующие:

  • Учетная запись пользователя, используемая для запуска пакета под агентом SQL Server, отличается от учетной записи автора исходного пакета.

  • У учетной записи пользователя нет необходимых разрешений для подключения или доступа к ресурсам за пределами пакета служб SSIS.

Пакет может не работать в следующих случаях:

  • Текущий пользователь не может расшифровать секреты из пакета. Этот сценарий может возникнуть, если текущая учетная запись или учетная запись выполнения
    отличается от исходной учетной записи автора пакета, а параметр свойства пакета
    ProtectionLevel не позволяет текущему пользователю
    расшифровывать секреты в пакете.

  • Соединение с SQL Server, использующее встроенную систему безопасности, завершается ошибкой, так как текущий пользователь не имеет необходимых разрешений.

  • Доступ к файлу невозможен, так как текущий пользователь не имеет необходимых разрешений для записи в общую папку, к которой обращается диспетчер соединений. Например, этот сценарий может возникнуть с поставщиками текстовых журналов, которые не используют имя входа и пароль. Этот сценарий также может возникнуть с любой задачей, зависящей от диспетчера соединений с файлами, например с задачей файловой системы SSIS.

  • Конфигурация пакета SSIS на основе реестра использует ключи реестра HKEY_CURRENT_USER. Ключи реестра HKEY_CURRENT_USER
    зависят от пользователя. Задача или диспетчер соединений требуют, чтобы текущая учетная запись пользователя имела правильные разрешения.

Способ 1. Использование учетной записи-посредника агента SQL Server. Создайте учетную запись-посредника агента SQL Server. Эта учетная запись-посредник должна использовать учетные данные, позволяющие агенту SQL Server запускать задание в качестве учетной записи, создавшей пакет, или в качестве учетной записи с необходимыми разрешениями.

Этот метод работает для расшифровки секретов и удовлетворяет требованиям пользователя к ключу. Однако этот метод может иметь ограниченный успех, поскольку пользовательские ключи пакета служб SSIS связаны с текущим пользователем и текущим компьютером. Таким образом, если вы переместите пакет на другой компьютер, этот метод все равно может завершиться ошибкой, даже если на шаге задания используется правильная учетная запись прокси-сервера.

Метод 2. Задайте для свойства ProtectionLevel пакета служб SSIS значение ServerStorage. Измените свойство ProtectionLevel пакета служб SSIS на ServerStorage. Этот параметр сохраняет пакет в базе данных SQL Server и позволяет управлять доступом через роли базы данных SQL Server.

Способ 3. Задайте для свойства ProtectionLevel пакета служб SSIS значение EncryptSensitiveWithPassword. Измените свойство ProtectionLevel пакета служб SSIS на EncryptSensitiveWithPassword. Этот параметр использует пароль для шифрования. Затем вы можете изменить командную строку шага задания агента SQL Server, чтобы включить этот пароль.

Метод 4. Используйте файлы конфигурации пакета служб SSIS Используйте файлы конфигурации пакета служб SSIS для хранения конфиденциальной информации, а затем сохраните эти файлы конфигурации в защищенной папке. Затем вы можете изменить свойство ProtectionLevel на DontSaveSensitive, чтобы пакет не шифровался и не пытался сохранить секреты в пакете. При запуске пакета SSIS необходимая информация загружается из файла конфигурации. Убедитесь, что файлы конфигурации надлежащим образом защищены, если они содержат конфиденциальную информацию.

Метод 5. Создание шаблона пакета. Для долгосрочного решения создайте шаблон пакета, использующий уровень защиты, отличный от значения по умолчанию. Эта проблема не возникнет в будущих пакетах.

Ссылка выше поможет вам пройти регистрацию и другие возможные сценарии отказа вашего пакета от агента SQL. Я подозреваю, что ваш пользователь Агента был поврежден. Но это предположение. Сначала вы включаете ведение журнала служб SSIS по следующей ссылке:

Включить ведение журнала пакетов SSIS

Немного информации по ссылке

Установка уровня ведения журнала для пакета с помощью диалогового окна «Выполнение пакета»

  • В SQL Server Management Studio перейдите к пакету в обозревателе объектов.

  • Щелкните пакет правой кнопкой мыши и выберите «Выполнить».

  • Выберите вкладку «Дополнительно» в диалоговом окне «Выполнение пакета».

  • В разделе Уровень ведения журнала выберите уровень ведения журнала. См. таблицу ниже для описания доступных значений.

  • Заполните любые другие конфигурации пакета, затем нажмите OK, чтобы запустить пакет.

Надеюсь, это поможет вам в первую очередь. Если нет, пожалуйста, дайте мне знать.

27.08.2015
Новые материалы

React on Rails
Основное приложение Reverb - это всеми любимый монолит Rails. Он отлично обслуживает наш API и уровень просмотра трафика. По мере роста мы добавляли больше интерактивных элементов..

Что такое гибкие методологии разработки программного обеспечения
Что представляют собой гибкие методологии разработки программного обеспечения в 2023 году Agile-методологии разработки программного обеспечения заключаются в следующем: И. Введение A...

Ториго  — революция в игре Го
Наш следующий вызов против ИИ и для ИИ. Сможет ли он победить людей в обновленной игре Го? Обратите внимание, что в следующей статье AI означает искусственный интеллект, а Goban  —..

Простое развертывание моделей с помощью Mlflow — Упаковка классификатора обзоров продуктов NLP от HuggingFace
Как сохранить свои модели машинного обучения в формате с открытым исходным кодом с помощью MLFlow, чтобы позже получить возможность легкого развертывания. Сегодня модели упаковки имеют несколько..

Математика и интуиция - Часть 1
У каждой математической формулы есть доказательство. Часто эти доказательства слишком сложно понять, поскольку многие из них основаны на индукции, некоторые - на очень сложных наблюдениях, а..

Раскрытие возможностей НЛП: часть речевой маркировки и ее проблемы
В сфере обработки естественного языка (NLP) маркировка частей речи (POS) выступает в качестве фундаментального метода, позволяющего компьютерам понимать и анализировать человеческий язык на..

Под поверхностью: раскрытие деталей системы с помощью инструментов Linux CLI
Чем больше вы изучаете Linux и продвигаетесь вперед, тем больше вам нужно проверять информацию о вашей системе. Эта информация может касаться аппаратного обеспечения, такого как процессор,..