Массовая загрузка невозможна, так как не удалось открыть файл «». Код ошибки операционной системы 5 (доступ запрещен.)
Хорошо. Я вижу, что было достаточно много подобных вопросов, которые уже были заданы. Поверхность формы может показаться, что я не должен задавать этот вопрос, потому что многие люди уже пытались ответить на этот вопрос, но я объясню, что мой сценарий отличается:
Прежде всего, мои настройки:
У меня есть два сервера за балансировщиком нагрузки
Сервер A: запуск службы Windows в качестве домена Service_account Сервер B: Запуск службы Windows в качестве домена service_account
Теперь я добавил всех пользователей в эту папку и установил полный контроль над ней, чтобы убедиться, что у всех, кто пытается получить доступ к папке, нет проблем с разрешениями.
Теперь я получаю эту ошибку: Cannot bulk load because the file “» could not be opened. Operating system error code 5(Access is denied.).
Только иногда. Вся проблема здесь в том, что ошибка не всегда воспроизводима. Это происходит только раз в неделю. Я пытался обойти балансировщик нагрузки и делать запросы непосредственно с сервера, и я не нашел никаких проблем. Кроме того, я также заметил, что запросы, сделанные до и после этого неудачного запроса, все успешны. Что означает, что это in a true sense спорадическая ошибка.
После просмотра SO я обнаружил две основные причины, которые традиционно вызывали эту ошибку:
Когда пользователь, работающий с сервисом, действительно не имеет доступа к этой папке. Что не так, потому что буквально каждый имеет доступ к этой папке.
Я сталкивался с некоторыми темами, где люди указывают на потенциальную Kerberos Double Hop потенциальную проблему. Как объяснено здесь: https://docs.microsoft.com/en-us/previous-versions/msp-np/ff649317(v=pandp.10)?redirectedfrom=MSDN
Это может быть Kerberos, и я копаю дальше, чтобы увидеть, если это проблема или нет. Но в то же время, скажем, Kerberos double hop виновник, что объясняет спорадический характер этой ошибки? Если Kerberos сбрасывает учетные данные, не будет ли это все время отбрасывать его вместо того, чтобы ТОЛЬКО выбирать несколько раз?
Или также, скажите, если ни одна из этих двух не является реальной причиной этой ошибки. Настоящая проблема заключается не в самой ошибке, а в самой спорадической природе ошибки. Может ли это быть что-то в сети, что может вызвать сбой в соединении?
Не удается загрузить навалом. Код ошибки операционной системы 5 (отказано в доступе.)
по какой-то странной причине у меня возникли проблемы с выполнением массовой вставки.
Я уверен после чтения этой что я правильно настроил свою роль пользователя, как говорится.
члены фиксированной роли сервера bulkadmin могут запускать инструкцию BULK INSERT.
я поставил Login Properties для проверки подлинности windows правильно (как показано ниже).. предоставление разрешений на уровне сервера bulkadmin
и команды EXEC sp_helpsrvrolemember ‘bulkadmin’ говорит мне, что информация выше была успешной, и текущий пользователь Michael-PCMichael и bulkadmin разрешения.
но даже если я все правильно настроил, насколько я знаю, я все еще получаю ошибку. выполнение массовой вставки непосредственно из SQL Студия Управления Сервером.
Msg 4861, Уровень 16, Состояние 1, Строка 2
Массовая загрузка невозможна, так как файл «C:UsersMichaelworkspacepydbdataandrew.из.txt » не удалось открыть. Код ошибки операционной системы 5(отказано в доступе.).
что не имеет смысла, потому что очевидно bulkadmins может запустить оператор, я должен перенастроить, как bulkadmin работает? (Я так потеряна). Есть идеи, как это исправить?
7 ответов
эта ошибка появляется при использовании проверки подлинности SQL Server и SQL Server не разрешен доступ к папке массовой загрузки.
таким образом, предоставление SQL server доступа к папке решит проблему.
Я не думаю, что переустановка SQL Server исправит это, это просто убьет некоторое время.
Я предполагаю, что это не Michael-PC\Michael Это попытка получить доступ к файлу, а скорее к учетной записи службы SQL Server. Если это так, то у вас есть как минимум три варианта (но, возможно, и другие):
a. Установите службу SQL Server для запуска от вашего имени.
b. Предоставьте учетной записи службы SQL Server явный доступ к этой папке.
c. Поместите файлы в более логичное место, где SQL Server имеет доступ или может иметь доступ (например, C:\bulk\ ).
Я предлагаю эти вещи, предполагая, что это замкнутая локальная рабочая станция. Есть определенно более серьезные проблемы безопасности вокруг доступ к локальной файловой системе с SQL Server когда мы говорим о производственной машине, конечно, это все еще можно в значительной степени смягчить с помощью c. выше-и только предоставление учетной записи службы доступа к папкам, которые вы хотите, чтобы она могла коснуться.
попробуйте дать папку(ы), содержащую CSV и разрешение на чтение файла формата для пользователя «MSSQLSERVER» (или любого пользователя, для которого служба SQL Server установлена в Войдите В Систему на Службы Windows)
У меня была та же проблема SSIS 2012, и решение состояло в использовании проверки подлинности Windows. Я использовал проверку подлинности SQL с пользователем sa.
иногда это может быть фиктивное сообщение об ошибке, попытался открыть файл с той же учетной записью, что он запускает процесс. У меня была такая же проблема в моей среде, и когда я открыл файл (с теми же учетными данными, запускающими процесс), он сказал, что он должен быть связан с известной программой, после того, как я сделал это, я смог открыть его и запустить процесс без каких-либо ошибок.
убедитесь, что файл, который вы используете ( ‘C:\Users\Michael\workspace\pydb\data\andrew.out.txt’ ) находится на компьютере SQL server, а не на клиентском компьютере с MSSMS.
учетная запись, которая запускает SQL, нуждается в доступе к общей папке.
Невозможно выполнить массовую загрузку, поскольку файл не может быть открыт. Код ошибки операционной системы 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» Пароль/пользователь: имя пользователя/Постоянный: Да’
Любая помощь по этому вопросу будет принята с благодарностью
Я не знаю, если вы решили эту проблему, но у меня была та же проблема, если экземпляр является локальным, вы должны проверить разрешение на доступ к файлу, но если вы обращаетесь с вашего компьютера к серверу (удаленный доступ), вы должны указать путь к серверу, что означает включение файла в каталог сервера, что решило мой случай
У меня был файл, расположенный в общей папке, я просто скопировал свои файлы в «c:\TEMP\Reports» на моем сервере (обновил запрос до BULK INSERT из новой папки). Задача агента успешно выполнена 🙂
Наконец, через долгое время я могу BULK вставлять автоматически через работу агента.
С наилучшими пожеланиями.
Я решил эту проблему,
войдите на сервер, на котором установлен SQL Server, и получите csv файл на сервере и выполнить ваш запрос, он вставит записей.
Если вы сообщите о проблеме совместимости типов данных, измените тип данных для этого столбца.
Я бы предположил, что диск P: не сопоставлен с учетной записью, на которой запущен сервер sql.
Я попытался предоставить доступ к папкам, но это не помогло Мое решение состояло в том, чтобы сделать выделенные ниже параметры, выделенные красным, для выбранного пользователя.
Вероятно, это проблема с разрешениями, но вам нужно обязательно попробовать эти шаги для устранения неполадок:
Не забудьте отменить любые изменения (особенно при работе с sa ). Если больше ничего не работает, вы можете попробовать превратить массовую загрузку в запланированное задание, работающее на сервере базы данных или другом сервере, на котором установлен bcp.
Чтобы решить эту проблему, необходимо включить ограниченное делегирование для учетной записи службы SQL Server. Смотрите здесь хороший пост, который объясняет это довольно хорошо
SQL Server с использованием аутентификации SQL Вам необходимо создать учетные данные для входа в SQL и использовать их для доступа к этому конкретному сетевому ресурсу. Посмотреть здесь
Невозможно выполнить массовую загрузку, поскольку файл не может быть открыт. Код ошибки операционной системы 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» Пароль /пользователь: имя пользователя /Постоянный: Да’
Любая помощь по этому вопросу будет принята с благодарностью
6 ответов
Я не знаю, решили ли вы эту проблему, но у меня возникла та же проблема: если экземпляр локальный, вы должны проверить разрешение на доступ к файлу, но если вы обращаетесь с вашего компьютера к серверу (удаленный доступ), у вас есть указать путь на сервере, что означает включение файла в каталог сервера, что решило мой случай
У меня был файл, расположенный в общей папке, я просто скопировал свои файлы в «c: \ TEMP \ Reports» на моем сервере (обновил запрос до BULK INSERT из новой папки). Задача агента успешно выполнена:)
Наконец, через долгое время я могу автоматически добавлять BULK через задание агента.
Я бы предположил, что диск P: не сопоставлен с учетной записью, с которой запущен сервер sql.
Вероятно, это проблема с разрешениями, но вам нужно обязательно выполнить следующие шаги для устранения неполадок:
Не забудьте отменить любые изменения (особенно при выполнении в виде sa ). Если больше ничего не работает, вы можете попытаться изменить массовую загрузку на запланированное задание, работающее на сервере базы данных или другом сервере, на котором установлен bcp.
Я попытался дать доступ к папкам, но это не помогло. Мое решение состояло в том, чтобы сделать выделенные ниже параметры в красном выбранными для вошедшего в систему пользователя
Чтобы решить эту проблему, необходимо включить ограниченное делегирование для учетной записи службы SQL Server. Смотрите здесь хороший пост, который объясняет это довольно хорошо
SQL Server с использованием аутентификации SQL Вам необходимо создать учетные данные для входа в SQL и использовать их для доступа к этому конкретному сетевому ресурсу. см. здесь
Массовая загрузка невозможна. Код ошибки операционной системы 5 (Доступ запрещен).
По какой-то странной причине у меня проблемы с выполнением массовой вставки.
Члены фиксированной серверной роли bulkadmin могут выполнять инструкцию BULK INSERT.
Но даже несмотря на то, что я все настроил правильно, насколько мне известно, я все равно получаю ошибку. выполнение массовой вставки непосредственно из SQL Server Management Studio.
Сообщение 4861, уровень 16, состояние 1, строка 2
Не удалось выполнить массовую загрузку, поскольку не удалось открыть файл «C: \ Users \ Michael \ workspace \ pydb \ data \ andrew.out.txt». Код ошибки операционной системы 5 (Доступ запрещен).
12 ответов
Я решил эту проблему довольно просто:
Ваша проблема решена.
В нашем случае это проблема Kerberos. Я выполнил действия, описанные в этой статье, чтобы решить проблему: https://techcommunity.microsoft.com/t5/SQL-Server-Support/Bulk-Insert-and-Kerberos/ba-p/317304.
Все сводилось к настройке делегирования для учетной записи компьютера SQL Server, на котором выполняется инструкция BULK INSERT. Учетная запись компьютера должна иметь возможность делегировать через службу «cifs» файловый сервер, на котором расположены файлы. Если вы используете ограниченное делегирование, обязательно укажите «Использовать любой протокол аутентификации».
Если задействована DFS, вы можете выполнить следующую команду Powershell, чтобы получить имя файлового сервера:
Вот что сработало для меня:
Войдите в SSIS с проверкой подлинности Windows.
1. Откройте службы, найдите имя учетной записи службы MSSQL NT и скопируйте его:
Теперь ваш запрос BULK INSERT должен работать нормально. Если проблема не исчезнет, попробуйте таким же образом добавить учетную запись агента SQL Server в разрешения папки. Обязательно перезапустите сервер MSSQL в службах после того, как закончите.
У меня возник аналогичный вопрос, когда я выполняю массовую вставку в SSMS, он работает, но он не работает и возвращается с «кодом ошибки операционной системы 5» при преобразовании задачи в агент SQL Server.
Учетной записи, которая запускает SQL, требуется доступ к общей папке.
Убедитесь, что файл, который вы используете ( ‘C:\Users\Michael\workspace\pydb\data\andrew.out.txt’ ), находится на компьютере с SQL-сервером, а не на клиентском компьютере, на котором работает MSSMS.
Иногда это может быть фиктивное сообщение об ошибке, попытка открыть файл с той же учетной записью, в которой запущен процесс. У меня была такая же проблема в моей среде, и когда я открыл файл (с теми же учетными данными, с которыми запущен процесс), он сказал, что он должен быть связан с известной программой, после того, как я это сделал, я смог открыть его и запустить процесс без ошибок.
Попробуйте предоставить папки, содержащие права на чтение CSV и Format File, для пользователя MSSQLSERVER (или любого другого пользователя, для которого служба SQL Server настроена на Вход в систему как в Службы Windows )
У меня была такая же проблема с SSIS 2012, и решением было использовать проверку подлинности Windows. Я использовал аутентификацию SQL с пользователем sa.
Я не думаю, что переустановка SQL Server исправит это, это просто убьет какое-то время.
Я предполагаю, что это не Michael-PC\Michael пытается получить доступ к файлу, а скорее учетная запись службы SQL Server. В этом случае у вас есть как минимум три варианта (но, вероятно, другие):
а. Настройте службу SQL Server на работу от вашего имени.
б. Предоставьте учетной записи службы SQL Server явный доступ к этой папке.
c. Поместите файлы в более логичное место, где у SQL Server есть доступ или где можно сделать доступ (например, C:\bulk\ ).
Эта ошибка появляется, когда вы используете проверку подлинности SQL Server и SQL Server не имеет доступа к папке массовой загрузки.
Таким образом, предоставление SQL-серверу доступа к папке решит проблему.



