Ошибка 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
значение.
Шаги, чтобы Решить-
- открыто
Sql Server Configuration manager
- Правильно
click on SQL Server (MSSQLSERVER
) - Идти к
Properties
- менять
log On As
значение дляLocalSystem
Надеюсь, это тоже поможет вам:)
Я просто столкнулся с этой же проблемой, но у меня было другое решение. По сути, на моем компьютере были установлены как 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 через диспетчер компьютера.
- Нажмите клавишу Windows + R, чтобы открыть окно "Выполнить".
- Введите compmgmt.msc в поле Открыть:.
- Щелкните ОК.
- Разверните " Службы и приложения".
- Разверните Диспетчер конфигурации SQL Server.
- Измените учетную запись пользователя на вкладке " Войти как ".
Теперь вы можете легко восстановить базу данных
Это случилось со мной ранее сегодня, я был членом группы администраторов локального сервера и имел беспрепятственный доступ, или я так думал. Я также пометил опцию "заменить", хотя в этом экземпляре нет такой БД.
Обнаружил, что там раньше была БД с тем же именем, и файлы MDF и LDF все еще физически находятся в папках данных и журналов сервера, но в метаданных sys.databases отсутствуют фактические метаданные. учетная запись службы сервера SQL также не может перезаписать существующие файлы. Также выяснилось, что владелец файлов "неизвестен", мне пришлось сменить владельца на 2 файла, указанные выше, чтобы он теперь принадлежал группе администраторов локального сервера, а затем переименовал его.
Затем, наконец, это сработало.
Исправление для меня заключалось в том, чтобы войти в Параметры при попытке восстановить базу данных и изменить путь на новый путь. Вот скриншот
В моем случае я должен был поставить галочку в Overwrite the existing database (WITH REPLACE)
под Options
вкладка на Restore Database
стр.
Причина, по которой я получил эту ошибку: потому что для базы данных уже был файл MDF, и он не перезаписывался.
Надеюсь, это кому-нибудь поможет.