Sql-Server

複製數據庫已刪除源 - 無法訪問 mdf 文件

  • January 17, 2020

我嘗試使用 Microsoft SQL Server Management Studio (SSMS) 複製數據庫,但右鍵點擊並按照嚮導進行操作。我希望目標伺服器與源相同,所以我在數據庫名稱中添加了“_new”。

該過程失敗(不幸的是我錯過了錯誤消息),現在源數據庫也失去了。我發現了關於同一主題的另一篇文章,其中建議定位和附加 .mdf 文件。

但是,當我嘗試附加 mdf 文件時,我收到以下錯誤消息:

未能為此請求檢索數據。(Microsoft.SqlServer.Management.Sdk.Sfc)

嘗試附加 mdf 文件時出錯。

幸好這只是一個測試數據庫,所以我沒有失去任何不容易複製的數據。但是有沒有辦法從這種情況中恢復過來?如果它曾經發生在生產數據庫上,我想做好準備。

該過程失敗(不幸的是我錯過了錯誤消息),現在源數據庫也失去了。我發現了關於同一主題的另一篇文章,其中建議定位和附加 .mdf 文件。

如果數據庫不再列在實例上,但您仍然可以看到 .mdf 文件,則它在第一次不成功的嘗試中以某種方式分離。螢幕截圖錯誤說:

CREATE FILE 遇到作業系統錯誤 5(拒絕訪問。)

該錯誤與安全性有關,Microsoft在分離或附加數據庫的過程中說明了一些有關安全性更改的資訊:

文件訪問權限是在許多數據庫操作期間設置的,包括分離或附加數據庫。

為了修復它,請檢查.mdf文件的權限,如果您確認它確實已更改,請更改它們以允許您執行附加過程或使用現在是.mdf文件所有者的相同登錄名執行附加過程。


DANIEL HUTMACHER 在他的文章 Detaching a database also alters file permissions中很好地描述了這種行為,他的結論是:

  • 使用 Windows 帳戶登錄時分離數據庫將更改文件權限,限制 SQL Server 的服務帳戶並只允許您的使用者訪問文件。
  • 將數據庫分離為“sa”或 SQL Server 帳戶將使文件的權限集保持不變。
  • 如果您以“sa”或其他 SQL Server 帳戶連接,則 SQL Server 的服務帳戶需要對您

要附加的任何數據庫文件的權限。

  • 如果您以 Windows 登錄名連接,需要對文件具有足夠的權限才能附加它們。

引用自:https://dba.stackexchange.com/questions/257553