Ошибка mssql "5(доступ запрещен.)" при восстановлении базы данных

Я хочу восстановить базу данных из файла (Tasks->Restore->Database; после того, как я выберу устройство и выберу файл) через SQL Server Management Studio.

После этого я получаю эту ошибку:

Операционная система возвратила ошибку "5(доступ запрещен.)" При попытке "RestoreContainer::ValidateTargetForCreation" в "E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\XXXXXX.mdf". Сообщение 3156, уровень 16, состояние 8, сервер XXXX, строка 2

Как мне исправить эту проблему? Это ошибка безопасности?

17 ответов

Решение

Учетная запись, под которой работает сервер sql, не имеет доступа к расположению, в котором у вас есть файл резервной копии или вы пытаетесь восстановить базу данных. Вы можете использовать диспетчер конфигурации SQL Server, чтобы определить, какая учетная запись используется для запуска экземпляра SQL Server, а затем убедиться, что эта учетная запись имеет полный контроль над файлом.BAK и папкой, в которую будет восстановлен MDF.

У меня недавно была эта проблема. Для меня исправлением было перейти на страницу "Файлы" диалогового окна "Восстановление базы данных" и установить флажок "Переместить все файлы в папку".Диалог восстановления базы данных

Ну, в моем случае решение было довольно простым и прямым.

Я должен был изменить только значение log On As значение.

Шаги, чтобы Решить-

  1. открыто Sql Server Configuration manager
  2. Правильно click on SQL Server (MSSQLSERVER )
  3. Идти к Properties

  1. менять log On As значение для LocalSystem

Надеюсь, это тоже поможет вам:)

Операционная система вернула ошибку «5(отказано в доступе)», когда восстановление базы данных на сервере sql можно решить, включив параметр «Переместить все файлы в папку» в параметрах «Файлы» следующим образом:

Я просто столкнулся с этой же проблемой, но у меня было другое решение. По сути, на моем компьютере были установлены как SQL Server, так и SQL Server Express. Это не сработало, когда я пытался восстановить SQL Express, но работало правильно, когда я восстановил его на SQL Server.

Хорошее решение, которое может работать, - перейти к файлам> и проверить перераспределение всех файлов.

Файлы перемещаются

Я столкнулся с той же проблемой, но моя установка немного отличается.

  • Я запускаю свою базу данных в док-контейнере Linux.
  • Инструмент управления sqlserver в Windows.

Я сделал следующее:

      sudo docker exec -u root -it sqlserver /bin/bash

Это входит в контейнер докера как пользователь root.

Затем:

      chmod 777 /path/to/file.bak

777 дает права на чтение, запись и выполнение файла для любой группы, пользователя

У меня была точно такая же проблема, но мое решение было другим - моя компания шифрует все файлы на моих машинах. После расшифровки файла у MSSQL не было проблем с доступом и создана БД. Просто щелкните правой кнопкой мыши файл.bak -> Свойства -> Дополнительно... -> Шифрование содержимого для защиты данных. Дешифровка

Я получил эту ошибку, потому что я установил флажок "Перераспределить все файлы в папку" на вкладке "Файлы" окна "Восстановление базы данных", но путь по умолчанию на моем локальном компьютере не существовал. У меня были файлы ldf/mdf в другой папке, после того как я сменил, что смог восстановить.

Я нашел это, и это сработало для меня:

CREATE LOGIN BackupRestoreAdmin WITH PASSWORD='$tr0ngP@$$w0rd'
GO
CREATE USER BackupRestoreAdmin FOR LOGIN BackupRestoreAdmin
GO
EXEC sp_addsrvrolemember 'BackupRestoreAdmin', 'dbcreator'
GO
EXEC sp_addrolemember 'db_owner','BackupRestoreAdmin'
GO

Если вы присоединяете базу данных, взгляните на сетку "Базы данных для присоединения", а именно на столбец "Владелец" после того, как вы указали свой файл.mdf. Запишите учетную запись и дайте ей полные разрешения как для mdf, так и для ldf файлов.

Я попробовал описанный выше сценарий и получил ту же ошибку 5 (доступ запрещен). Я сделал глубокое погружение и обнаружил, что файл.bak должен иметь доступ к учетной записи службы SQL. Если вы не уверены, введите services.msc в Пуск -> Выполнить, затем проверьте учетную запись входа в службу SQL.

Затем перейдите к файлу, щелкните правой кнопкой мыши и выберите вкладку "Безопасность" в "Свойствах", затем отредактируйте, чтобы добавить нового пользователя.

Наконец, затем дайте полное разрешение на это, чтобы дать полный доступ.

Затем из SSMS попробуйте восстановить резервную копию.

Я получал ту же ошибку при попытке восстановить резервную копию базы данных SQL 2008 R2 в базе данных SQL 2012. Я предполагаю, что ошибка связана с недостаточными правами на размещение файлов.mdf и.ldf на диске C. Я попробовал одну простую вещь, затем мне удалось успешно ее восстановить.

Попробуй это:

В окнах мастера восстановления БД перейдите на вкладку Файлы и измените место назначения восстановления с C: на другой диск. Затем продолжите обычный процесс восстановления. Это определенно получит восстановление успешно!

Надеюсь, это вам тоже поможет. Ура:)

У учетной записи нет доступа к хранилищу файла резервной копии. Выполните следующие действия, чтобы легко получить доступ к диспетчеру конфигурации SQL Server через диспетчер компьютера.

  1. Нажмите клавишу Windows + R, чтобы открыть окно "Выполнить".
  2. Введите compmgmt.msc в поле Открыть:.
  3. Щелкните ОК.
  4. Разверните " Службы и приложения".
  5. Разверните Диспетчер конфигурации SQL Server.
  6. Измените учетную запись пользователя на вкладке " Войти как ".

Теперь вы можете легко восстановить базу данных

Это случилось со мной ранее сегодня, я был членом группы администраторов локального сервера и имел беспрепятственный доступ, или я так думал. Я также пометил опцию "заменить", хотя в этом экземпляре нет такой БД.

Обнаружил, что там раньше была БД с тем же именем, и файлы MDF и LDF все еще физически находятся в папках данных и журналов сервера, но в метаданных sys.databases отсутствуют фактические метаданные. учетная запись службы сервера SQL также не может перезаписать существующие файлы. Также выяснилось, что владелец файлов "неизвестен", мне пришлось сменить владельца на 2 файла, указанные выше, чтобы он теперь принадлежал группе администраторов локального сервера, а затем переименовал его.

Затем, наконец, это сработало.

Исправление для меня заключалось в том, чтобы войти в Параметры при попытке восстановить базу данных и изменить путь на новый путь. Вот скриншот

В моем случае я должен был поставить галочку в Overwrite the existing database (WITH REPLACE) под Options вкладка на Restore Database стр.

Причина, по которой я получил эту ошибку: потому что для базы данных уже был файл MDF, и он не перезаписывался.

Надеюсь, это кому-нибудь поможет.

Другие вопросы по тегам