2010-08-16 338 views
51

我想通過SQL Server管理工作室從文件(任務 - >恢復 - >數據庫;選擇設備並選擇文件後)恢復數據庫。恢復數據庫期間mssql'5(Access is denied。)'錯誤

在那之後,我得到這個錯誤:

The operating system returned the error '5(Access is denied.)' while attempting 'RestoreContainer::ValidateTargetForCreation' on 'E:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\XXXXXX.mdf'. Msg 3156, Level 16, State 8, Server XXXX, Line 2

我該如何解決這個問題?這是一個安全錯誤嗎?

回答

65

正在運行sql server的帳戶無權訪問備份文件的位置或正嘗試將數據庫還原到的位置。您可以使用SQL Server配置管理器來查找哪個帳戶用於運行SQL Server實例,然後確保該帳戶完全控制.BAK文件和MDF將恢復到的文件夾。

enter image description here

+11

我改爲「本地系統」,它的工作! – Seva 2014-07-17 00:28:59

+2

我將「NT Service \ MSSQLSERVER」用戶添加到允許的「組或用戶名」列表中,並且它可以正常工作 – slava 2016-04-18 07:07:53

4

我只是碰到了同樣的問題,但有不同的定位。本質上,我的計算機上安裝了SQL Server和SQL Server Express。當我嘗試還原到SQL Express時,這不起作用,但在將它還原到SQL Server時正常工作。

+0

+1這可能是一個特別討厭的情況,導致在調試錯誤時浪費太多時間 – demongolem 2013-09-30 16:45:18

1

我發現了這一點,它的工作對我來說:

CREATE LOGIN BackupRestoreAdmin WITH PASSWORD='[email protected]$$w0rd' 
GO 
CREATE USER BackupRestoreAdmin FOR LOGIN BackupRestoreAdmin 
GO 
EXEC sp_addsrvrolemember 'BackupRestoreAdmin', 'dbcreator' 
GO 
EXEC sp_addrolemember 'db_owner','BackupRestoreAdmin' 
GO 
130

最近我有這個問題。對我來說,修復方法是進入「恢復數據庫」對話框的「文件」頁面,並選中「將所有文件重新定位到文件夾」。 Restore Database dialog

+3

感謝您的。這對我來說是最好的解決方案,因爲源數據庫位於我打算從系統中刪除的驅動器上。搬遷是此舉的必要組成部分。 – 2013-09-30 14:58:21

+1

此解決方案也適用於我 – Dhatri 2016-11-08 10:59:14

0

在我的情況下,我不得不在Overwrite the existing database (WITH REPLACE)Options標籤頁Restore Database頁面。

我得到這個錯誤的原因是:因爲數據庫已經存在一個MDF文件,並且它沒有被覆蓋。

希望這會幫助別人。

1

如果您要附加數據庫,請在查看「要附加的數據庫」網格,特別是在指定了.mdf文件之後的「所有者」列中查看。注意帳戶併爲mdf和ldf文件授予完全權限。

1

我試過上面的場景並得到了同樣的錯誤5(拒絕訪問)。我做了深入的研究,發現文件.bak應該可以訪問SQL服務帳戶。如果您不確定,請在開始 - >運行中鍵入services.msc,然後檢查SQL服務登錄帳戶。

然後轉到該文件,右鍵單擊並選擇屬性中的安全選項卡,然後編輯以添加新用戶。

最後,請給予它的完全權限,以便完全訪問。

然後從SSMS嘗試恢復備份。

+1

您還沒有足夠的代表直接附加屏幕截圖,因此請粘貼鏈接以作爲對此文章的評論,並且有人會爲您添加。 – 2015-02-10 01:24:16

+0

這是上下文的唯一答案,它適用於問題的實體框架樣式實例,我相信這裏沒有.BAK文件。 (代碼優先 - 實體框架 - 初始數據庫種子遷移) 您有很多感激之情 - 我花了數小時尋找一個合理的答案後花費了! – Mitchb 2015-09-06 13:28:00

1

我在嘗試恢復SQL 2012數據庫中的SQL 2008 R2備份數據庫時收到相同的錯誤。我想這個錯誤是由於沒有足夠的權限將.mdf和.ldf文件放在C盤中。我嘗試了一件簡單的事情,然後成功地恢復了它。

試試這個:

在還原數據庫嚮導窗口,轉到文件選項卡,在C更改還原目標:到其他驅動器。然後繼續進行常規恢復過程。它一定會成功恢復!

希望這對你也有幫助。乾杯:)

6

嗯,在我的情況下,解決方案非常簡單直接。

我不得不改變價值log On As值。

步驟Resolve-

  1. 打開Sql Server Configuration manager
  2. click on SQL Server (MSSQLSERVER
  3. 轉到Properties

​​

  • 變化log On AsLocalSystem
  • enter image description here

    希望這將幫助您太:)

    0

    我h廣告完全相同的問題,但我的修復是不同的 - 我的公司正在加密我的機器上的所有文件。解密MSSQL文件後沒有任何問題訪問和創建數據庫。只需右擊.bak文件屬性高級...加密內容以保護數據。 Decrypting

    0

    這發生在我今天早些時候,我是本地服務器的管理員組的成員,有通行無阻,或者我是這麼認爲的。我還勾選了「替換」選項,即使實例中沒有這樣的數據庫。

    發現那裏曾經有同名的數據庫,MDF和LDF文件仍然物理地位於服務器的數據和日誌文件夾中,但sys.databases中缺少實際的元數據。 SQL服務器的服務帳戶也不能覆蓋現有的文件。還發現文件的所有者是「未知的」,我必須將所有權更改爲上面的兩個文件,以便它現在由本地服務器的管理員組擁有,然後重命名它。

    然後最後,它的工作。

    0

    我得到了這個錯誤,因爲我在「恢復數據庫」窗口的「文件」選項卡中選中了「將所有文件重新分配給文件夾」,但默認路徑在我的本地計算機上不存在。我在另一個文件夾中有ldf/mdf文件,一旦我改變了我能夠恢復的文件。