Ошибка восстановления SQL Server - отказ в доступе

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

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

System.Data.SqlClient.SqlError: операционная система вернула error '5 (Access is denied.)' при попытке 'RestoreContainer:: ValidateTargetForCreation' в 'c:\Program Файлы \Microsoft SQL Server\MSSQL.1\MSSQL\DataLabTables.mdf '.

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

Ответ 1

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

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

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

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

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

Ответ 2

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

Это звучит так:

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

или

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

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

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

У пользователя, выполняющего восстановление на удаленном сервере, очевидно, нет доступа к этому каталогу на удаленном сервере. Забастовкa >

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

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

Ответ 3

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

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

Ответ 4

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

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

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

Ответ 5

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

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

Источник

Ответ 6

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

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

Ответ 7

потерял пару часов на эту проблему. все прошло:

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

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

Ответ 8

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

Ответ 9

Другим сценарием может быть наличие нескольких путей к базе данных. Во-первых, обратите внимание на путь, в котором в настоящее время хранятся новые базы данных. Поэтому, если вы создаете новую пустую базу данных и затем выполняете Tasks/Restore, убедитесь, что путь, который пытается восстановить, - это тот же каталог, в котором была создана пустая база данных. Даже если путь восстановления закончен, вы все равно получите ошибка доступа запрещена, если это не текущий путь, с которым вы работаете. Очень легко определить, когда путь не является законным, гораздо труднее определить, когда путь легален, но не текущий путь.

Ответ 10

Извините, потому что я не могу комментировать...

У меня была та же проблема. В моем случае проблема была связана с попыткой восстановления в старой папке сервера sql (которая существовала на сервере). Это связано с тем, что резервная копия старого SQL-сервера (т.е. Резервное копирование SQL Server 2012) восстановлена ​​на новом SQL-сервере (SQL Server 2014). Реальная проблема не слишком отличается от ответа @marc_s. Во всяком случае, я изменил только целевую папку на новую папку DATA SQL Server.

Ответ 11

Это может быть не лучшее решение, но я пытался выполнить восстановление на SQL Server 2005, но я перешел на SQL Server 2008 и работал.

Ответ 12

Есть такая проблема. Ошибка, вызванная включенным сжатием в папках SQL Server.

Ответ 13

Frnds... У меня была такая же проблема при восстановлении базы данных и пробовала каждое решение, но не могла быть решена. Затем я попытался установить SQL 2005 и решить эту проблему. В последний раз я забыл проверить настройку опции при инсталляции SQL.. Он приходит два раза при установке и я проверяю его только для них.

Ответ 14

Мой случай был немного уникален. Сделал все по книге, но все равно не получилось.
Естественно, попробовал то, что здесь предлагали здесь люди - все равно ничего не получилось. В конце концов, это было связано с каким-то блестящим разумом, создающим папку , называемую " databasename.mdf"!

SQL продолжал жаловаться, что у него нет доступа к записи c:\path\databasename.mdf, и я убедился, что все разрешения NTFS существуют, и служба работает под конкретным пользователем...
... и все время это была просто папка с несчастью.

Надеюсь, это поможет кому-то избежать серых волос: -)

Ответ 15

В моем случае - мне пришлось дважды проверить путь к резервной копии базы данных, откуда я восстанавливал. Я ранее восстановил это с другого пути, когда я сделал это в первый раз. Я исправил путь резервного копирования, чтобы использовать путь резервного копирования, который я использовал в первый раз, и он работает!

Ответ 17

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

Ответ 18

Попробуйте следующее:

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

Ответ 19

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

Ответ 20

Перейдите в C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\и нажмите Разрешить доступ при появлении нового окна.

Ответ 21

Затем попробуйте переместить его в подпапку под C:, но убедитесь, что пользователь имеет полные права на используемую вами папку.