Команда Bulk Insert не выполняется в хранимой процедуре - PullRequest
0 голосов
/ 04 ноября 2019

Системная ошибка: не удается выполнить массовую загрузку, поскольку файл "XYZ.txt" не может быть открыт. Код ошибки операционной системы 1311 (в настоящее время нет серверов входа, доступных для обслуживания запроса на вход.)

У меня есть хранимая процедура в SQL Server 2008 R2, которая использует команду Bulk Insert для загрузки данных изTXT-файлы в таблицы SQL Server. Эти файлы находятся в общей папке на диске, расположенном в другом домене. У меня полный доступ к диску. Я пытался копировать файлы в другой каталог на этом диске, перемещать файлы, удалять файлы и все работает.

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

Агент SQL Server использует очень мощную учетную запись с гораздо большими правами, чем у меня. Но задание не выполняется.

Чтобы найти обходной путь, я создал пакет служб SSIS, который вызывает хранимую процедуру из «Выполнить задачу SQL». Для подключения к базе данных используется проверка подлинности Windows. Я попытался выполнить пакет, и он успешно запустился. Умеет загружать данные из txt в таблицу.

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

Я запутался, что я делаю не так ..? Я даже присоединился к роли bulkdmin и снова безуспешно выполнял работу.

Буду признателен, если кто-то может помочь.

Спасибо.

1 Ответ

0 голосов
/ 07 ноября 2019

Просто из любопытства я попытался заменить команду «Массовая вставка» на BCP. По какой-то причине BCP работал. Он может открыть файлы на сетевом диске и прочитать их, чтобы вставить данные в таблицы сервера SQL. Я даже могу вызвать тот же хранимый процесс из задания агента SQL, и он прекрасно работает. Мне не нужно было использовать пакет служб SSIS для решения этой проблемы.

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