Ошибка восстановления SQL Server - доступ запрещен - PullRequest
142 голосов
/ 11 августа 2011

Я создал базу данных на своем локальном компьютере, а затем сделал резервную копию с именем tables.bak таблицы DataLabTables.

Я переместил эту резервную копию на удаленный компьютер без этой таблицы и попытался выполнить восстановление, но получил следующую ошибку:

System.Data.SqlClient.SqlError: Возвращена операционная системаошибка «5 (доступ запрещен.)» при попытке «RestoreContainer :: ValidateTargetForCreation» в «c: \ Program Files \ Microsoft SQL Server \ MSSQL.1 \ MSSQL \ DataLabTables.mdf '.

Как мне исправить мои права, если в этом проблема?

Ответы [ 18 ]

448 голосов
/ 17 июня 2013

У меня только что была эта проблема с SQL Server 2012.

Оказывается, все, что мне нужно было сделать, это поставить галочку в поле «Переместить все файлы в папку» в разделе «Файлы»:

enter image description here

(Нажмите, чтобы увидеть изображение в полном размере)

Это, конечно, предполагает, что у вас установлена ​​правильная версия SQL Server.

30 голосов
/ 11 августа 2011

В сообщении об ошибке говорится, что при проверке target (c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf) вашей операции восстановления произошла ошибка.

Звучит так:

a) этот файл уже существует (поскольку вы уже восстановили его ранее) и используется SQL Server

или

b) этот каталог вообще не существует

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

У меня есть догадка: вы уже восстановили эту базу данных ранее, а теперь, после второго восстановления, вы не сделалиt установите флажок «Перезаписать существующую базу данных» в мастере восстановления - таким образом, существующий файл не может быть перезаписан и восстановление завершится неудачно.

Пользователь, выполняющий восстановление на удаленном сервере, очевидно, не имеетдоступ к этому каталогу на удаленном сервере.

C:\program files\.... - защищенный каталог - обычные (не администраторы) пользователи не имеют доступа к этому каталогу (и его подкаталогам).

Самое простое решение: попробуйте поместить свой BAK-файл в другое место (например, C:\temp) и восстановить его оттуда

25 голосов
/ 07 декабря 2013

У меня была такая же проблема. Оказалось, что мои SQL Server и SQL Server Agent службы logon as работали под учетной записью Network Services, у которой не было прав записи для восстановления резервной копии.

Я изменил обе эти службы для входа в систему как Local System Account, и это устранило проблему.

9 голосов
/ 14 сентября 2013

Недавно я столкнулся с этой проблемой в SQL 2008 R2, и у меня сработало следующее решение:

1) Создайте новую базу данных с тем же именем, что и та, которую вы пытаетесь восстановить 2) При восстановлении используйте то же имя, которое вы использовали выше, и в опциях выберите опцию перезаписи

Вы могли бы дать вышеупомянутый шанс, если другие решения не работают.

6 голосов
/ 14 февраля 2014

У меня была похожая проблема. Я попытался восстановить файл 2005.bak, и я получил точно такую ​​же ошибку. Я выбрал вариант перезаписи, но безрезультатно.

Мое решение состояло в том, чтобы предоставить пользователю SQL доступ к рассматриваемому каталогу, перейдя в папку и отредактировав права доступа через экран свойств.

6 голосов
/ 12 ноября 2012

Создатель резервной копии установил MSSql версии 10, поэтому при создании резервной копии он также сохраняет исходный путь к файлу (чтобы иметь возможность восстановить его в том же месте), но у меня была версия 11, поэтому он не могнайдите каталог назначения.

Поэтому я изменил каталог выходного файла на C: \ Program Files \ Microsoft SQL Server \ MSSQL11.MSSQLSERVER \ MSSQL \ DATA \, и он смог успешно восстановить базу данных.

Источник

2 голосов
/ 28 октября 2015

потерял пару часов из-за этой проблемы.все получилось:

«доступ запрещен» в моем случае действительно означал «отказано в доступе».Учетная запись пользователя mssqlstudio на моем устройстве Windows НЕ имела полного контроля над папкой, указанной в сообщении об ошибке.Я дал ему полный контроль.в доступе больше не было отказано и восстановление прошло успешно.

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

1 голос
/ 17 декабря 2017

У меня была эта проблема, я вошел в систему как администратор, и она устранила проблему.

0 голосов
/ 23 сентября 2017

У меня была такая же проблема, но я использовал sql server 2008 r2, вы должны проверить опции и проверить пути, по которым sql собирается сохранять файлы .mdf и .ldf, вы должны выбрать путь установки вашего сервера sql.Я решил свою проблему с этим, я надеюсь, что это поможет вам.

0 голосов
/ 10 марта 2016

Попробуйте:

В окне мастера восстановления БД перейдите на вкладку Файлы, снимите флажок «Переместить все файлы в папку» и измените место назначения восстановления с C: на другой диск.Затем продолжите обычный процесс восстановления.Он будет успешно восстановлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...