Sql-Server
無法恢復數據庫
我正在嘗試恢復幾個數據庫,但我不知道為什麼其中一些數據庫失敗並出現以下錯誤:
消息 3634,級別 16,狀態 1,第 1 行
作業系統在嘗試在“K:\日誌\MyDatabase.ldf’。
消息 3156,級別 16,狀態 8,第 1 行
文件“MyDatabase_log”無法恢復到“K:\Logs\MyDatabase.ldf”。使用 WITH MOVE 標識文件的有效位置。
Msg 3119, Level 16, State 1, Line 1
在規劃 RESTORE 語句時發現了問題。以前的消息提供了詳細資訊。
消息 3013,級別 16,狀態 1,第 1 行
RESTORE DATABASE 異常終止。
這是我正在使用的 SQL 語句
RESTORE DATABASE [MyDatabase] FROM DISK = 'K:\Backups\MyDatabase_backup_2014_10_14_055006_4726051.bak' WITH REPLACE, MOVE 'MyDatabase_data' TO 'K:\Data\MyDatabase.mdf', MOVE 'MyDatabase_log' TO 'K:\Logs\MyDatabase.ldf', STATS = 10
正如我所說,其中一些會很好地工作,而另一些則會給我一個類似於上述的錯誤。不幸的是,我找不到失敗/成功的模式。
如果存在某種身份驗證問題,為什麼我的 SQL 對某些人有效,而對其他人無效?我錯過了什麼?
LE:我不得不讓這個使用者
sysadmin
處理一個完全不相關的問題。這可能也解決了這個問題。我會調查並回來的。
作為另一個問題的一部分,我必須給我的登錄
sysadmin
角色。從那以後,我再也沒有看到我上面描述的問題。是的,它現在可以工作了,但我對這個解決方案不滿意,部分原因是我不太明白髮生了什麼。
稍後編輯:正如托馬斯在評論中指出的那樣,這是發生了什麼:
如果數據庫存在,則 RESTORE 權限預設授予 sysadmin 和 dbcreator 固定伺服器角色的成員以及數據庫的所有者 (dbo)(對於 FROM DATABASE_SNAPSHOT 選項,數據庫始終存在)。