Невозможно выполнить массовую загрузку, поскольку файл не удалось открыть. Код ошибки операционной системы 3

Я'пытаюсь установить хранимую процедуру в качестве задания агента SQL Server Agent Job, и это дает мне следующую ошибку,

Cannot bulk load because the file "P:\file.csv" could not be opened. Код ошибки операционной системы 3 (не удалось получить текст этой ошибки. Причина: 15105). [SQLSTATE 42000] (Ошибка 4861)

Забавно, но хранимая процедура работает нормально, когда я выполняю ее вручную.

Диск P: является общим диском на Windows SQL Server из LINUX через Samba Share, и он был настроен путем выполнения следующей команды,

EXEC xp_cmdshell 'net use P: "\lnxusanfsd01\Data" Password /user:username /Persistent:Yes'

Любая помощь по этому вопросу будет высоко оценена

Комментарии к вопросу (6)

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

пример:

BULK INSERT Table
FROM 'C:\bulk\usuarios_prueba.csv' -- This is server path not local
WITH 
  (
     FIELDTERMINATOR =',',
     ROWTERMINATOR ='\n'
  );
Комментарии (3)

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

У меня файл находился в общей папке, я просто скопировал свои файлы в "c:\TEMP\Reports" на своем сервере (обновил запрос на BULK INSERT из новой папки). Задание агента успешно выполнено :)

Наконец-то, после долгого времени, я получил возможность автоматической BULK Insert через задание агента.

С наилучшими пожеланиями.

Комментарии (0)

Я решил эту проблему,

вход в компьютер-сервер, где SQL Server установлен Вам вас CSV-файл В файле на компьютере-сервере и выполнить ваш запрос будет вставить записи.

Если вы дадите вопрос совместимости данных изменить тип данных для этого столбца

Комментарии (1)

Я бы предложил П: диск не подключен к учетной записи, что SQL сервер запущен как.

Комментарии (0)

Используя подключение к SQL через проверку подлинности Windows: А "по протоколу Kerberos двойного прыжка" это происходит: один хоп это клиентское приложение подключается к SQL-серверу, а второй прыжок-это SQL Server подключение к удаленному " и\\NETWORK_MACHINE\" по. Такой "двойной прыжок" попадает под ограничения ограниченное Делегирование и вы в конечном итоге с доступом к общему ресурсу как "анонимный вход" и, следовательно, отказано в доступе.

Для решения проблемы необходимо разрешить делегирование для учетной записи службы SQL-сервера. См. здесь хороший пост, что объясняет его довольно хорошо

В SQL Server с использованием проверки подлинности SQL Вам нужно создать учетные данные для входа в SQL и использовать его для доступа к определенному сетевому ресурсу. См. здесь

Комментарии (0)

Возможно, это проблема с разрешениями, но вам нужно обязательно попробовать эти шаги для устранения неполадок:

  • Поместите файл на локальный диск и посмотрите, работает ли работа (вам не обязательно нужен доступ по RDP, если вы можете сопоставить букву диска на локальной рабочей станции с каталогом на сервере базы данных).
  • Поместите файл в удаленный каталог, который не требует имени пользователя и пароля (позволяет всем читать) и используйте UNC путь (\\server\directory\file.csv).
  • Настройте задание SQL на запуск от своего имени пользователя
  • Настройте задание SQL на запуск от имени sa и добавьте команды net use и net use /delete до и после них.

Не забудьте отменить все изменения (особенно запуск от имени sa). Если ничего не помогает, вы можете попробовать изменить массовую загрузку на запланированное задание, выполняемое на сервере базы данных или на другом сервере, на котором установлен bcp.

Комментарии (4)

Я пробовал давать доступ к папкам, но это не помогло. Мое решение было сделать ниже выделены параметры в красном выбрано для вошедшего в систему пользователя

Комментарии (1)