2015-12-30 127 views
0

我試圖使用C#將數據庫備份文件(.bak)還原到新創建的數據庫。我得到以下內部異常:C#異常:RESTORE DATABASE異常終止

無法打開備份設備'\ GC.bak'。操作系統錯誤5(訪問被拒絕。)。
RESTORE DATABASE異常終止

我的服務器是一個的LocalDB。

void RestoreDB(string name) 
{ 
    var connection = new ServerConnection(Properties.Settings.Default.Well); 

    var sqlServer = new Server(connection); 

    var rstDatabase = new Restore(); 
    rstDatabase.Database = name; 
    rstDatabase.Action = RestoreActionType.Database; 
    rstDatabase.Devices.AddDevice(AppDomain.CurrentDomain.BaseDirectory + "GC.bak", DeviceType.File); 
    rstDatabase.ReplaceDatabase = true; 
    rstDatabase.SqlRestore(sqlServer); 
} 
+0

你是否在管理員權限下運行此操作?只是一個想法。 –

+0

@PiyushParashar我是唯一的用戶。我的帳戶是admin –

+1

考慮使用System.Environment.CurrentDirectory而不是AppDomain.CurrentDomain.BaseDirectory。 – enkryptor

回答

0

默認情況下,SQL Server只能訪問服務器驅動器上的幾個特定位置(即默認數據庫和備份文件夾位置)。看起來您可能試圖從非標準位置恢復文件,因此您需要將權限授予SQL服務器運行在該目錄下的服務帳戶,或者更容易,將備份文件複製到常規備份文件位置並重試。

+0

我已經把mdf設置爲默認位置。 C:\ Program Files \ Microsoft SQL Server \ MSSQL12.MSSQLSERVER \ MSSQL \ DATA。或者它是我正在談論的.bak文件的位置? –

+0

bak文件是造成您問題的原因之一。 –

+0

如何將MSSQLSERVER權限授予特定文件夾(我的bak文件夾)?我的意思是,我在安全方面給了什麼名字? –