我正在嘗試爲Windows窗體應用程序創建備份和恢復功能。如何以編程方式恢復SQL本地數據庫
所以,我試圖做一個數據庫恢復。我的代碼是這樣的:
string cbdfilename = "c:\\Users\\Public\\Public Document";
SqlConnection.ClearAllPools();
SqlConnection con = new SqlConnection("Data Source=(LocalDB)\\v11.0;AttachDbFilename=|DataDirectory|\\BbCon.mdf;Integrated Security=True;Connect Timeout=30;");
string sql;
sql = "Use master;Alter Database BbCon Set Single_User With Rollback Immediate;Restore Database BbCon From Disk = @FILENAME With Replace;Alter Database BbCon Set Multi_User;";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.Parameters.AddWithValue("@FILENAME", cbdfilename);
con.Open();
try
{
cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
MessageBox.Show("Restore DB failed" + ex.ToString());
}
finally
{
con.Close();
con.Dispose();
}
但是當我嘗試運行此,我得到一個錯誤:
Restore db failed System.Data.SqlClient.SqlException(0X80131904):userdoesnot have permission to alter database BbCon.mdf the database doesnot exist or or datbase is not in a state that allows access checks.
誰能幫助我嗎?
這是一個本地數據庫,只需從它斷開連接,並使用System.IO命令(如FileStream)複製文件。然後恢復它只是用備份的副本覆蓋MDB。 我不相信本地數據庫mdb文件有系統/主表等,或者備份/恢復命令將在他們的工作。 –
@Ryan Mann,localDB是MDF,也有標準的備份/恢復命令。但有些部分是正確的,當我們只需要一份MDF(不是備份)時,我們需要停止服務器並且僅僅複製。 –
而'ALTER DATABASE'需要以管理員身份連接到主數據庫(集成安全= TRUE)。那麼具有權限的異常消息將被解決。 –