在還原一個200M左右的bak格式數據庫文件時遇到了兩個問題:
問題1:
RESTORE 無法處理數據庫 'XXXX',因爲它正由此會話使用。建議在執行此操作時使用 master 數據庫
問題2:
超時時間已到。在操作完成之前超時時間已過或服務器未響應
解決及實現代碼如下:
string pathFile ;//bak文件路徑
string dbName ;//數據庫名稱
string connectionString;//數據庫連接字符串
// 還原數據庫
if (!File.Exists(pathFile)) return false;
SqlConnection conn = new SqlConnection(connectionString);
string cmdStr = string.Format("use master restore database {0} from disk='{1}'", dbName, pathFile);//添加“use master ”解決問題一
SqlCommand cmd = new SqlCommand(cmdStr, conn);
try
{
conn.Open();
cmd.CommandTimeout = 100;//解決問題二
cmd.ExecuteNonQuery();
}
catch(Exception ex)
{
Console.WriteLine("還原數據庫失敗");
}
finally
{
conn.Close();
}