C#實現SQL數據庫備份與還原


  用Sql語句實現備份與還原操作時,最好不要使用需要備份或還原的數據庫連接,而使用master,否則可能會出現如下三個問題:(1)超時時間已到。在操作完成之前超時時間已過或服務器未響應。(2)  在向服務器發送請求時發生傳輸級錯誤。(provider:共享內存提供程序,error:0-系統無法打開文件。)  (3)從服務器接收結果時發生傳輸級錯誤。(provider:共享內存提供程序,error:0   -   系統無法打開文件。) 

  還原或刪除sql server數據庫時,經常會出現:“因為數據庫正在使用,所以無法獲得對數據庫的獨占訪問權”,解決方法是在還原語句前執行"Alter database BookShop Set Offline With rollback immediate”,還原語句后執行“Alter database BookShop Set Online With Rollback immediate”。

 1 using System;
 2 using System.Data;
 3 using System.Data.SqlClient;
 4 
 5 namespace Util
 6 {
 7     class DbHelper
 8     {
 9         public static string DbName { get; set; }
10 
11         private static SqlConnection SqlConnection = new SqlConnection("data source=.;Initial Catalog=master;integrated security=SSPI;");
12         private static string SqlBackup = "BACKUP DATABASE BookShop TO DISK = 'F:\\ms\\src\\InternetBookstore\\DB\\" + DbName + ".bak'";
13         private static string SqlRestore = "Alter database BookShop Set Offline With rollback immediate RESTORE DATABASE BookShop FROM DISK = 'F:\\ms\\src\\InternetBookstore\\DB\\" + DbName + ".bak' Alter database BookShop Set Online With Rollback immediate";
14         private SqlCommand SqlCommandBackup     = new SqlCommand() { Connection = SqlConnection, CommandType = CommandType.Text, CommandText = SqlBackup };
15         private SqlCommand SqlCommandRestore    = new SqlCommand() { Connection = SqlConnection, CommandType = CommandType.Text, CommandText = SqlRestore };
16 
17         public void DbBackup()
18         {
19             SqlConnection.Open();
20             try
21             {
22                 SqlCommandBackup.ExecuteNonQuery();
23             }
24             catch (Exception e)
25             {
26                 string str = e.Message;
27                 SqlConnection.Close();
28             }
29             SqlConnection.Close();
30         }
31 
32         public void DbRestore()
33         {
34             SqlConnection.Open();
35             try
36             {
37                 SqlCommandRestore.ExecuteNonQuery();
38             }
39             catch (Exception e)
40             {
41                 string str = e.Message;
42                 SqlConnection.Close();
43             }
44             SqlConnection.Close();
45         }
46     }
47 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM