Помилка mssql '5 (доступ заборонено.)' під час відновлення бази даних


76

Я хочу відновити базу даних із файлу (Завдання → Відновити → База даних; після вибору з пристрою та вибору файлу) через SQL Server Management Studio.

Після цього я отримую таку помилку:

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

Як вирішити цю проблему? Це помилка безпеки?

Відповіді:


92

Обліковий запис, під яким запущений сервер sql, не має доступу до місця, де ви маєте файл резервної копії або намагаєтесь відновити базу даних. За допомогою диспетчера конфігурацій SQL Server можна знайти, який обліковий запис використовується для запуску екземпляра SQL Server, а потім переконатися, що обліковий запис має повний контроль над файлом .BAK та папкою, до якої буде відновлено MDF.

введіть тут опис зображення


2
Я додав користувача "NT Service \ MSSQLSERVER" до списку дозволених "Імен груп або користувачів", і це спрацювало
slava

181

Нещодавно у мене була ця проблема. Виправленням для мене було перейти на сторінку Файли діалогового вікна Відновити базу даних і встановити прапорець "Перенести всі файли в папку".

Діалогове вікно відновлення бази даних


3
Дякую за це. Це було найкращим рішенням у моєму випадку, оскільки вихідна база даних знаходилась на диску, який я маю намір видалити із системи. Переїзд був необхідною частиною переїзду.
Michael Grant

Дякую! Це вирішило проблему. Я відчував цю проблему в одному файлі в декількох облікових записах користувачів і працював в режимі адміністратора.
Jordan_Walters

Для мене чудово працює, дякую!
Денні

21

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

Мені довелося змінити лише значення log On Asвартості.

Кроки до вирішення

  1. відчинено Sql Server Configuration manager
  2. Право click on SQL Server (MSSQLSERVER)
  3. Йти до Properties

введіть тут опис зображення

  1. змінити log On Asзначення наLocalSystem

введіть тут опис зображення

Сподіваючись, це допоможе і вам :)


3

Я просто зіткнувся з цією ж проблемою, але мав інше виправлення. По суті, на моєму комп'ютері були встановлені як SQL Server, так і SQL Server Express. Це не спрацювало, коли я намагався відновити SQL Express, але працював правильно, коли відновив його на SQL Server.


+1 Це може бути особливо неприємний сценарій, що призводить до втрати занадто багато часу на налагодження помилки
demongolem

1

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

Потім перейдіть до файлу, клацніть правою кнопкою миші та виберіть вкладку Безпека у Властивостях, а потім редагуйте, щоб додати нового користувача.

Нарешті, дайте на це повний дозвіл, щоб надати повний доступ.

Потім із SSMS спробуйте відновити резервну копію.


1
У вас ще недостатньо представників, щоб прикріпити знімок екрана безпосередньо, тому вставте посилання як коментар до цього повідомлення, і хтось поставить його вам.
Натан Таггі,

Це єдина відповідь із контекстом, який працює для екземпляра стилю фреймворку Entity проблеми, де, на мою думку, немає файлу .BAK. (Code First - фреймворк сутності - початкова міграція насіння бази даних) Вам велика подяка - я витратив години, шукаючи відповіді, яка мала сенс!
Mitchb

1

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

Спробуйте це:

У вікні майстра відновлення БД перейдіть на вкладку Файли, змініть пункт відновлення з C: на інший диск. Потім продовжуйте регулярний процес відновлення. Це, безумовно, вдало відновить!

Сподіваюся, це теж допоможе вам. На ура :)


0

Я знайшов це, і мені це вдалося:

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

Чи можете ви трохи детальніше пояснити, що це робить?
Джуліан

Минуло 8 років ... але він створює логін з паролем, потім користувача для цього входу, а потім додає ролі з команд sp_ ролі члена та власника баз даних, дозволяє BackRestoreAdmin бути dbcreator і db_owner
Tom Stickel

0

У моєму випадку я повинен був перевірити коробку в Overwrite the existing database (WITH REPLACE)відповідно з Optionsвкладкою на Restore Databaseсторінці.

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

Сподіваюся, це комусь допоможе.


0

Якщо ви приєднуєте базу даних, подивіться на сітку "Бази даних для приєднання", а саме в стовпець Власник, після того, як ви вказали свій файл .mdf. Зверніть увагу на обліковий запис і надайте йому повні дозволи для файлів mdf та ldf.


0

У мене була точно така ж проблема, але моє виправлення було іншим - моя компанія шифрує всі файли на моїх машинах. Після розшифрування файлу MSSQL не мав жодних проблем з доступом і створив БД. Просто клацніть правою кнопкою миші файл .bak -> Властивості -> Додатково ... -> Шифрувати вміст для захисту даних. Розшифровка


Я не впевнений, чому ця відповідь проголосувала. У мене була та сама проблема. Усі дозволи були нормальними, але оскільки файл був позначений зашифрованим, SQL піднімав доступ, заборонений на читання вмісту з файлу.
JamieB

0

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

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

Тоді, нарешті, це спрацювало.


0

Обліковий запис не має доступу до місця для резервного копіювання файлу. Виконайте наступні кроки, щоб легко отримати доступ до диспетчера конфігурацій SQL Server через Computer Manager

  1. Клацніть клавішу Windows + R, щоб відкрити вікно Виконати.
  2. Введіть compmgmt.msc у поле Відкрити:.
  3. Клацніть OK .
  4. Розширте Послуги та програми .
  5. Розгорніть диспетчер конфігурації SQL Server .
  6. Змінити обліковий запис користувача на вкладці Вхід як .

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


0

Хорошим рішенням, яке може працювати, є перейти до файлів> і перевірити перерозподіл усіх файлів

Файли переміщуються


0

Для мене виправлення полягало в тому, щоб зайти в Параметри під час спроби відновити базу даних і змінити шлях на новий шлях. Ось скріншот


-1

Існує кілька причин цієї помилки, я отримав цю помилку, оскільки встановив прапорець "Перерозподілити всі файли в папку" на вкладці "Файли" вікна "Відновити базу даних", але шлях за замовчуванням не існував на моєму локальному комп'ютері. У мене були файли ldf / mdf в іншій папці, коли я змінив, що зміг відновити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.