Невозможна загрузка навалом, так как файл не может быть открыт. Код ошибки операционной системы 3
Я пытаюсь настроить хранимую процедуру как работу агента SQL Server, и это дает мне следующую ошибку:
Невозможно выполнить массовую загрузку, так как файл "P:\file.csv" не может быть открыт. Код ошибки операционной системы 3 (не удалось получить текст для этой ошибки. Причина: 15105). [SQLSTATE 42000] (Ошибка 4861)
Забавно, что хранимая процедура работает нормально, когда я выполняю ее вручную.
Привод P: - это общий диск на Windows SQL Server от LINUX через Samba Share, и он был настроен, выполнив следующую команду:
EXEC xp_cmdshell 'net use P: "\ lnxusanfsd01\Data" Пароль/пользователь: имя пользователя/постоянный: да'
Любая помощь по этому поводу будет высоко оценена
Ответы
Ответ 1
Я не знаю, решила ли вы эту проблему, но у меня была такая же проблема, если экземпляр является локальным, вы должны проверить разрешение на доступ к файлу, но если вы получаете доступ с вашего компьютера на сервер (удаленный доступ), у вас есть для указания пути на сервере, поэтому это означает включение файла в каталог сервера, который разрешил мой случай
Пример:
BULK INSERT Table
FROM 'C:\bulk\usuarios_prueba.csv' -- This is server path not local
WITH
(
FIELDTERMINATOR =',',
ROWTERMINATOR ='\n'
);
Ответ 2
Чтобы это было просто, , я просто изменил каталог, из которого я импортировал данные в локальную папку на сервере.
У меня был файл, расположенный в общей папке, я просто скопировал свои файлы на "c:\TEMP\Reports" на моем сервере (обновил запрос до BULK INSERT из новой папки). Задача агента выполнена успешно:)
Наконец, после долгого времени я могу автоматически вставлять BULK Insert через задание агента.
С уважением.
Ответ 3
Я бы предложил, чтобы диск P: не был сопоставлен для учетной записи, с которой был запущен сервер sql.
Ответ 4
Вероятно, это проблема с разрешениями, но вам нужно попробовать выполнить следующие действия для устранения неполадок:
- Поместите файл на локальный диск и посмотрите, работает ли работа (вам не обязательно нужен RDP-доступ, если вы можете сопоставить букву диска на своей локальной рабочей станции с каталогом на сервере базы данных).
- Поместите файл в удаленный каталог, который не требует имени пользователя и пароля (позволяет всем читать) и использовать путь UNC (\ server\directory\file.csv)
- Настроить задание SQL для запуска как собственное имя пользователя
- Настройте задание SQL для работы как
sa
и добавьте команды net use
и net use /delete
до и после
Не забудьте отменить любые изменения (особенно работает как sa
). Если ничего не работает, вы можете попытаться изменить массовую загрузку в запланированную задачу, запущенную на сервере базы данных или на другом сервере с установленной bcp.
Ответ 5
Я попытался предоставить доступ к папкам, но это не помогло. Мое решение состояло в том, чтобы сделать выделенные ниже варианты в красном, выбранном для входа в систему пользователя
![This is what you see when you right click and select the username you have logged in for windows authentication mode.]()