Проект SSIS - Развертывание каталога - Переменная среды (для местоположения), обращающаяся к файловому серверу, сопоставленному с локальным диском Z - Проблема агента SQL Server - PullRequest
1 голос
/ 05 июля 2019

У меня есть пакет служб SSIS, который читает несколько файлов с использованием контейнера For Each Loop.В этом пакете имеется ряд параметров, и в каталоге служб Integration Services в SSMS я создал среду с множеством переменных для этого проекта / пакета.

Для этого пакета имеется ряд переменных среды,Существует определенная переменная среды для расположения источника.

В то время как в моем параметре DEV я смог передать переменную среды расположения источника как:

C:\Data Repository\Files    (in a local machine).

Все хорошо.Пакет работает отлично, и для каждого работающего контейнера Loop читает файлы.

Однако в настройке PROD я должен использовать файловый сервер, сопоставленный с диском Z.

Например:

This PC > Data Repository (\\tordfs) (Z:) > Data Repository > X

становится

Z:\Data Repository\X

, когда я копирую путь.

Внутри пакета служб SSIS я могу установить значение параметра для расположения источника как Z:\Data Repository\X и контейнер For Each Loop Container работает нормально из SSDT / Visual Studio.

Теперь после развертывания пакета / проекта SSIS в каталоге SSMS, когда я передаю Z:\Data Repository\X в качестве значения для среды расположения источникаи я запускаю пакет вручную из каталога, все работает нормально.

Однако, когда я использую Агент SQL Server дляПри выполнении вышеприведенного процесса я получаю следующую ошибку :

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

Нужно ли что-либо делать в контейнере «Для каждого цикла» или в каталоге служб SSIS, чтобыустранить вышеуказанную ошибку во время выполнения из каталога с помощью агента SQL Server?

Дайте мне знать.

Ответы [ 3 ]

0 голосов
/ 06 июля 2019

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

Так что-то вроде:

\\tordfs\Data Repository\Files

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

0 голосов
/ 06 июля 2019

Большое спасибо, ребята. Цени это.

Мне кажется, я исправил проблему:

В переменной среды не может быть Z: \ Хранилище данных \ X

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

\\ tordfs \ Хранилище данных \ Хранилище данных \ X

В то время как ручное выполнение из каталога служб интеграции SSMS может принимать Z: \ Data Repository \ X в качестве значения переменной среды,

Агенту SQL Server требуется \\ tordfs \ Хранилище данных \ Хранилище данных \ X

Если агент SQL Server при чтении из среды в каталоге читает Z: \ Репозиторий данных \ X,

Я получаю опубликованный выше Контейнер для каждого цикла!

При этом я использую прокси-сервер для агента SQL Server для решения других проблем с доступом, таких как перемещение файла в папку с помощью задачи «Файловая система».

0 голосов
/ 06 июля 2019

У меня есть 2 предложения:

  1. Попробуйте дать разрешения на чтение / запись учетной записи службы SQL Database Engine NT SERVICE\MSSQL$<Instance Name> (где <Instance Name> следует заменить именем установленного экземпляра) :

  2. Попробуйте подключить сетевой диск Z: \ внутри SQL Server:

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