Пакет служб SSIS DTSX теряет данные в задании агента SQL Server - PullRequest
0 голосов
/ 19 июля 2011

У меня есть задание SSIS, которое берет файлы из входного каталога FTP и распаковывает содержимое во временный каталог для дальнейшей обработки.Я использую цикл каталогов For-Each над входным каталогом FTP, и в этом есть вызов Winzip.Аргумент к вызову командной строки настраивается с именем файла входного файла и именем временного каталога с помощью построителя выражений SSIS.В Expression Builder это выглядит следующим образом:

 -e  " +  @[User::InputFolder] + "\\" + @[User::CurrentInputFileName] + "  " + @[User::TempFolder] 

Теперь все работает отлично, когда я запускаю его локально из VS2005 и получаю доступ к соответствующим файлам по сети.Но когда я развертываюсь на сервере приложений, я ничего не получаю с другой стороны;это просто висит там.Переменные, кажется, теряются по пути.

Есть идеи у кого-нибудь?Кто-нибудь видел подобное поведение из пакета служб SSIS?

Ответы [ 2 ]

1 голос
/ 19 июля 2011

Когда вы запускаете пакет служб SSIS в Business Intelligence Development Studio (BIDS), он выполняется под вашими учетными данными, и у вас могут быть полные права доступа к папке, в которую извлекаются файлы. Если вы запланируете запуск пакета в агенте SQL Server, пакет будет работать под SQL Agent Service Account, учетная запись может не иметь доступа к папке.

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

  • Еще одна вещь, которую необходимо проверить, - это вероятность того, что переменная @[User::InputFolder] может содержать пробел в пути. В этом случае этот параметр должен быть заключен в двойные кавычки при передаче аргументам командной строки Winzip.

  • Существует ли вероятность того, что FTP-сервер недоступен с сервера, на котором размещено задание SQL? Я столкнулся с такой проблемой из-за блокировки брандмауэра.

  • Включение опции Logging в пакете поможет перехватить сообщения об ошибках. Вот ссылка , которая объясняет, как включить ведение журнала.

  • Я предполагаю, что приведенное в вопросе выражение не является полным выражением, потому что это не сработает. Чтобы правильно оценить, нужно начинать с двойной кавычки. Выражение: "-e " + @[User::InputFolder] + "\\" + @[User::CurrentInputFileName] + " " + @[User::TempFolder]

Следующие шаги описывают, как настроить задание SQL для запуска пакета служб SSIS. Если у вас есть доступ к SQL Server Agent через SQL Server Management Studio, ниже приведены шаги по созданию задания с использованием графического интерфейса пользователя. В шагах показано, как создать задание SQL для запуска служб SSIS с использованием учетной записи службы агента SQL, а также как создать прокси-сервер для запуска с использованием других учетных данных. Если проблема связана с разрешениями, запуск под другой учетной записью может помочь вам решить проблему.

  1. Перейдите в SQL Server Management Studio. Разверните SQL Server Agent и щелкните правой кнопкой мыши на Jobs, затем выберите New Job..., как показано на скриншоте # 1 .

  2. Укажите имя и владелец по умолчанию будет учетной записью, которая создает работу, но вы можете изменить его в соответствии с вашими требованиями. Присвойте категорию, если хотите, а также предоставьте описание. Смотрите скриншот # 2 .

  3. В разделе «Шаги» нажмите New..., как показано на скриншоте # 3 .

  4. В диалоговом окне «Новый шаг задания» укажите имя шага. Выберите SQL Server Inegration Services Package из Тип. Этот шаг будет выполняться под SQL Agent Service Account по умолчанию. Выберите источник пакета как File system и перейдите к пути пакета, нажав на многоточие. Это заполнит путь пакета. Смотрите скриншот # 4 . Если вы не хотите, чтобы шаг выполнялся по SQL Agent Service Account, то обратитесь к шагам # 8 - 9 , чтобы узнать, как можно использовать другой счет.

  5. Если у вас есть файл конфигурации служб SSIS (.dtsConfig) для пакета, щелкните вкладку Конфигурации и добавьте файл конфигурации, как показано на скриншоте # 5 .

  6. Нажмите OK, и на шаге 1 появится пакет, как показано на скриншоте # 6 . Точно так же вы можете создавать различные шаги.

  7. После создания задания вы можете щелкнуть правой кнопкой мыши на задании и выбрать Script Job as --> CREATE To --> New Query Editor Window, чтобы сгенерировать скрипт, как показано на скриншоте # 7 .

  8. Чтобы запустить шаг служб SSIS под другой учетной записью, в Management Studio перейдите к Security --> right-click on Cedentials --> select New Credential..., как показано на скриншоте # 8 .

  9. В диалоговом окне New Credential укажите имя учетных данных, учетную запись Windows и пароль, под которым вы хотите выполнить шаги SSIS в заданиях SQL. Смотрите скриншот # 9 . Учетные данные будут созданы, как показано на скриншоте # 10 .

  10. Далее нам нужно создать прокси.В Management Studio перейдите к SQL Server Agent --> Proxies --> right-click on SSIS Package Execution --> select New Proxy..., как показано на скриншоте # 11 .

  11. В окне New Proxy Account укажите имя Proxy, выберите новоесоздал учетные данные, предоставьте описание и выберите пакет служб интеграции SQL Server, как показано на снимке экрана # 12 .Прокси-аккаунт должен быть создан, как показано на скриншоте # 13 .

  12. Теперь, если вы вернетесь к шагу в задании SQL, вы должны увидеть только что созданный проксиучетная запись в Запустить как выпадающего.См. Скриншот # 14 .

Надеюсь, что это поможет.

Скриншот №1:

1

Снимок экрана № 2:

2

Снимок экрана № 3:

3

Снимок экрана № 4:

4

Снимок экрана № 5:

5

Снимок экрана № 6:

6

Снимок экрана № 7:

7

Снимок экрана № 8:

8

Снимок экрана № 9:

9

Снимок экрана № 10:

10

Снимок экрана № 11:

11

Снимок экрана № 12:

12

Снимок экрана № 13:

13

Снимок экрана № 14:

14

1 голос
/ 19 июля 2011

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

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

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