Поделиться через


Устранение неполадок при выполнении пакета служб SSIS с помощью агента SQL Server (видеоматериал по SQL Server)

Продукт: службы Microsoft SQL Server Integration Services

Автор: Карла Саботта (Carla Sabotta), корпорация Microsoft

Продолжительность: 00:12:12

Размер: 9,50 МБ

Тип: WMV

Посмотреть видеоролик

См. также:

Пакет служб SSIS не запускается при вызове из шага задания агента SQL Server

Программа dtexec

Как создать конфигурацию пакета

Установка уровня защиты пакетов

Использование ролей служб Integration Services

Другие видеоролики:

Как автоматизировать выполнение пакета служб SSIS с помощью агента SQL Server (видеоматериал по SQL Server)

Краткое содержание видеоролика

В этом видеоролике показаны методы устранения неполадок запуска пакета служб SQL Server Integration Services при вызове из шага задания агента SQL Server. При этом пакет успешно запускается вне агента SQL Server.

Текст видеоролика

Временная метка видеоролика Звук

00:00

Здравствуйте! Меня зовут Карла Саботта. Я автор технической документации для служб Microsoft SQL Server Integration Services.

В этом видеоролике я покажу методы устранения неполадок запуска пакета служб SQL Server Integration Services при вызове из шага задания агента SQL Server. При этом пакет успешно запускается вне агента SQL Server.

Вы узнаете о рекомендуемых методах решения этой проблемы, в том числе создании учетной записи-посредника, изменении свойства ProtectionLevel пакета, сохранении конфиденциальных данных в файле конфигурации пакета и сохранении пакета в базе данных msdb в SQL Server.

Как видите, заданию не удалось выполнить пакет служб Integration Services.

Рассмотрим причины, по которым попытка запуска может оказаться неудачной при вызове пакета из шага задания агента SQL Server.

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

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

Конфиденциальные данные — это пароль в строке соединения, переменная, помеченная как конфиденциальная, и т. д.

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

01:53

Во-первых, можно сохранить пакет в базе данных msdb в SQL Server. При этом будет установлен уровень защиты Использовать хранилище и роли сервера для контроля доступа (Rely on server storage and roles for access control). Это можно сделать с помощью службы Integration Services в среде SQL Server Management Studio.

Теперь доступом к пакету на чтение и запись управляют роли базы данных. Надо назначить роли модуля чтения одну из предопределенных ролей базы данных служб Integration Services или пользовательскую роль базы данных. Предопределенные роли базы данных — это db_ssisadmin, db_ssisoperator и db_ssisltduser. В нашем примере мы назначим пакету роль db_ssisadmin.

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

03:59

Второй способ — установить свойство ProtectionLevel пакета в значение EncryptSensitiveWithPassword в среде Business Intelligence Development Studio.

Чтобы получить доступ к свойству ProtectionLevel, щелкните в любом месте потока управления пакета и выберите ProtectionLevel в окне свойств.

Затем измените командную строку шага задания агента SQL Server, добавив в нее пароль, с помощью которого шифруются конфиденциальные данные. Пароль вводится с помощью параметра /Decrypt программы командной строки dtexec. Шаги задания агента SQL Server используют программу dtexec для запуска пакетов.

05:22

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

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

При запуске пакета из шага задания агента SQL Server конфиденциальные данные загружаются из созданного файла конфигурации.

Этот файл должен храниться в защищенной папке.

До сих пор мы говорили о способах решения проблем, связанных с шифрованием и конфиденциальностью данных.

Другая причина, по которой пакет может не запуститься из шага задания агента, связана с разрешениями учетной записи пользователя.

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

08:08

Чтобы проверить разрешения, имеющиеся у учетной записи пользователя, откройте окно командной строки и выполните команду RunAs.

Замените mydomain\myuser данными для проверки подлинности, хранящимися в учетной записи. В ответ на приглашение введите пароль учетной записи.

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

Учтите, что после переноса на другой компьютер пакет может перестать работать, если его свойство ProtectionLevel имеет значение EncryptSensitiveWithUserKey или EncryptAllWithUserKey.

09:12

Чтобы создать учетную запись-посредник, необходимо быть членом либо предопределенной роли сервера sysadmin, либо роли SQLAgentOperatorRole, SQLAgentReaderRole или SQLAgentUserRole в базе данных msdb.

Создать учетную запись-посредник можно с помощью запроса Transact-SQL или в диалоговом окне Создание учетной записи-посредника (New Proxy Account) в среде SQL Server Management Studio. Мы сделаем это в диалоговом окне Создание учетной записи-посредника (New Proxy Account).

На странице Общие (General) укажем имя и учетные данные для новой учетной записи-посредника. Назовем ее Учетная запись-посредник пакета и выберем имеющиеся учетные данные пользователя User1, которые содержат данные для проверки подлинности.

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

Кроме того, нужно указать подсистему, которая может работать с учетной записью-посредником. Поскольку задание выполняет пакет, выберем подсистему Пакет служб SQL Server Integration Services (SQL Server Integration Services Package).

Описание вводить не обязательно.

На странице Участники (Principals) можно добавить или удалить роли, чтобы предоставить или запретить доступ к учетной записи-посреднику. Автоматически право доступа предоставляется членам предопределенной роли сервера sysadmin.

Учетные данные пользователя User1, которые мы указали для учетной записи-посредника, отображаются в обозревателе объектов как дочерний элемент узла Учетные данные (Credentials).

Создать новые учетные данные можно с помощью запроса Transact-SQL или в диалоговом окне Создание учетных данных (New Credentials).

В этом видеоролике показано только решение проблем с запуском пакета при вызове из шага задания агента SQL Server. В нем рассмотрено создание учетной записи-посредника, изменение свойства ProtectionLevel пакета, сохранение конфиденциальных данных в файле конфигурации пакета, а также сохранение пакета в базе данных msdb в SQL Server.

Спасибо за внимание. Надеемся, что эта информация оказалась полезной для вас. Другие видеоматериалы можно посмотреть на веб-сайте Microsoft SQL Server.