久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

如何用SQLDMO在ASP.NET頁面下實現(xiàn)數(shù)據(jù)庫的備份與恢復

 四兩哥 2010-11-27
  如何用SQLDMO在ASP.NET頁面下實現(xiàn)數(shù)據(jù)庫的備份與恢復 收藏
首先需要添加對SQLDMO引用
 
1.實現(xiàn)數(shù)據(jù)庫的備份:

 1/**//// <summary>
 2        /// 數(shù)據(jù)庫備份
 3        /// </summary>
 4        /// <returns>備份是否成功</returns>
 5        public bool DbBackup()
 6        {
 7            string path = CreatePath();
 8            SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
 9            SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
10            try
11            {
12                oSQLServer.LoginSecure = false;
13                oSQLServer.Connect(server,uid, pwd);
14                oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
15                oBackup.Database = database;
16                oBackup.Files = path;
17                oBackup.BackupSetName = database;
18                oBackup.BackupSetDescription = "數(shù)據(jù)庫備份";
19                oBackup.Initialize = true;
20                oBackup.SQLBackup(oSQLServer);
21
22                return true;
23            }
24            catch(Exception ex)
25            {
26                return false;
27                throw ex;
28            }
29            finally
30            {
31                oSQLServer.DisConnect();
32            }
33        }
2.實現(xiàn)數(shù)據(jù)庫恢復:
在恢復時要注意先殺掉當前數(shù)據(jù)庫的所有進程

 1/**//// <summary>
 2        /// 數(shù)據(jù)庫恢復
 3        /// </summary>
 4        public string DbRestore()
 5        {
 6            if(exepro()!=true)//執(zhí)行存儲過程
 7            {
 8                return "操作失敗";
 9            }
10            else
11            {
12                SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
13                SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
14                try
15                {
16                    exepro();
17                    oSQLServer.LoginSecure = false;
18                    oSQLServer.Connect(server, uid, pwd);
19                    oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
20                    oRestore.Database = database;
21                    /**////自行修改
22                    oRestore.Files = @"d:\aaa\aaa.bak";
23                    oRestore.FileNumber = 1;
24                    oRestore.ReplaceDatabase = true;
25                    oRestore.SQLRestore(oSQLServer);
26
27                    return "ok";
28                }
29                catch(Exception e)
30                {
31                    return "恢復數(shù)據(jù)庫失敗";
32                    throw e;
33                }
34                finally
35                {
36                    oSQLServer.DisConnect();
37                }
38            }
39        }
40       
41        /**//// <summary>
42        /// 殺死當前庫的所有進程
43        /// </summary>
44        /// <returns></returns>
45        private bool exepro()
46        {
47
48            SqlConnection conn1 = new SqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
49            SqlCommand cmd = new SqlCommand("killspid",conn1);
50            cmd.CommandType = CommandType.StoredProcedure;
51            cmd.Parameters.Add("@dbname","aaa");
52            try
53            {
54                conn1.Open();
55                cmd.ExecuteNonQuery();
56                return true;
57            }
58            catch(Exception ex)
59            {
60                return false;
61            }
62            finally
63            {
64                conn1.Close();
65            }
66        }
完整的操作類如下:

  1using System;
  2using System.Collections;
  3using System.Data;
  4using System.Data.SqlClient;
  5
  6namespace DbBackUp
  7{
  8    /**//// <summary>
  9    /// 創(chuàng)建人:suyiming
 10    /// 創(chuàng)建時間:2007年8月1日
 11    /// 功能描述:實現(xiàn)數(shù)據(jù)庫的備份和還原
 12    /// 更新記錄:
 13    /// </summary>
 14    public class DbOperate
 15    {   
 16        /**//// <summary>
 17        /// 服務器
 18        /// </summary>
 19        private string server;
 20       
 21        /**//// <summary>
 22        /// 登錄名
 23        /// </summary>
 24        private string uid;
 25       
 26        /**//// <summary>
 27        /// 登錄密碼
 28        /// </summary>
 29        private string pwd;
 30       
 31        /**//// <summary>
 32        /// 要操作的數(shù)據(jù)庫
 33        /// </summary>
 34        private string database;
 35       
 36        /**//// <summary>
 37        /// 數(shù)據(jù)庫連接字符串
 38        /// </summary>
 39        private string conn;
 40
 41        /**//// <summary>
 42        /// DbOperate類的構造函數(shù)
 43        /// 在這里進行字符串的切割,,獲取服務器,登錄名,,密碼,數(shù)據(jù)庫
 44        /// </summary>
 45        public DbOperate()
 46        {
 47            conn = System.Configuration.ConfigurationSettings.AppSettings["constr"].ToString();
 48            server = StringCut(conn,"server=",";");
 49            uid = StringCut(conn,"uid=",";");
 50            pwd = StringCut(conn,"pwd=",";");
 51            database = StringCut(conn,"database=",";");
 52        }
 53       
 54        /**//// <summary>
 55        /// 切割字符串
 56        /// </summary>
 57        /// <param name="str"></param>
 58        /// <param name="bg"></param>
 59        /// <param name="ed"></param>
 60        /// <returns></returns>
 61        public string StringCut(string str,string bg,string ed)
 62        {
 63            string sub;
 64            sub=str.Substring(str.IndexOf(bg)+bg.Length);
 65            sub=sub.Substring(0,sub.IndexOf(";"));
 66            return sub;
 67        }
 68       
 69        /**//// <summary>
 70        /// 構造文件名
 71        /// </summary>
 72        /// <returns>文件名</returns>
 73        private string CreatePath()
 74        {
 75            string CurrTime = System.DateTime.Now.ToString();
 76            CurrTime = CurrTime.Replace("-","");
 77            CurrTime = CurrTime.Replace(":","");
 78            CurrTime = CurrTime.Replace(" ","");
 79            CurrTime = CurrTime.Substring(0,12);
 80            string path = @"d:\\aaa\\";
 81            path += database;
 82            path += "_db_";
 83            path += CurrTime;
 84            path += ".BAK";
 85            return path;
 86        }
 87
 88        /**//// <summary>
 89        /// 數(shù)據(jù)庫備份
 90        /// </summary>
 91        /// <returns>備份是否成功</returns>
 92        public bool DbBackup()
 93        {
 94            string path = CreatePath();
 95            SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
 96            SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
 97            try
 98            {
 99                oSQLServer.LoginSecure = false;
100                oSQLServer.Connect(server,uid, pwd);
101                oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
102                oBackup.Database = database;
103                oBackup.Files = path;
104                oBackup.BackupSetName = database;
105                oBackup.BackupSetDescription = "數(shù)據(jù)庫備份";
106                oBackup.Initialize = true;
107                oBackup.SQLBackup(oSQLServer);
108
109                return true;
110            }
111            catch(Exception ex)
112            {
113                return false;
114                throw ex;
115            }
116            finally
117            {
118                oSQLServer.DisConnect();
119            }
120        }
121
122        /**//// <summary>
123        /// 數(shù)據(jù)庫恢復
124        /// </summary>
125        public string DbRestore()
126        {
127            if(exepro()!=true)//執(zhí)行存儲過程
128            {
129                return "操作失敗";
130            }
131            else
132            {
133                SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
134                SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
135                try
136                {
137                    exepro();
138                    oSQLServer.LoginSecure = false;
139                    oSQLServer.Connect(server, uid, pwd);
140                    oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
141                    oRestore.Database = database;
142                    /**////自行修改
143                    oRestore.Files = @"d:\aaa\aaa.bak";
144                    oRestore.FileNumber = 1;
145                    oRestore.ReplaceDatabase = true;
146                    oRestore.SQLRestore(oSQLServer);
147
148                    return "ok";
149                }
150                catch(Exception e)
151                {
152                    return "恢復數(shù)據(jù)庫失敗";
153                    throw e;
154                }
155                finally
156                {
157                    oSQLServer.DisConnect();
158                }
159            }
160        }
161       
162        /**//// <summary>
163        /// 殺死當前庫的所有進程
164        /// </summary>
165        /// <returns></returns>
166        private bool exepro()
167        {
168
169            SqlConnection conn1 = new SqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
170            SqlCommand cmd = new SqlCommand("killspid",conn1);
171            cmd.CommandType = CommandType.StoredProcedure;
172            cmd.Parameters.Add("@dbname","aaa");
173            try
174            {
175                conn1.Open();
176                cmd.ExecuteNonQuery();
177                return true;
178            }
179            catch(Exception ex)
180            {
181                return false;
182            }
183            finally
184            {
185                conn1.Close();
186            }
187        }
188
189    }
190
191}
192
在相應的按鈕

1<asp:Button id="wbtn_Backup" runat="server" Width="60px" Text="備 份" CssClass="Button"></asp:Button>單擊事件里調用即可:

 1/**//// <summary>
 2        /// 備份按鈕
 3        /// </summary>
 4        /// <param name="sender"></param>
 5        /// <param name="e"></param>
 6        private void wbtn_Backup_Click(object sender, System.EventArgs e)
 7        {
 8            DbOperate dbop = new DbOperate();
 9            dbop.DbBackup();
10        }
 
CREATE PROCEDURE killspid
(
 @dbname varchar(20) --數(shù)據(jù)庫的名稱
)
AS
BEGIN
 DECLARE @sql nvarchar(500)
 DECLARE @spid int
 SET @sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
 EXECUTE (@sql)
 OPEN getspid
 FETCH NEXT FROM getspid INTO @spid
 WHILE @@fetch_status<>-1
  BEGIN
   EXECUTE('kill '+@spid)
   FETCH NEXT FROM getspid INTO @spid
  END
 CLOSE getspid
 DEALLOCATE getspid
END
GO
本文來自CSDN博客,,轉載請標明出處:http://blog.csdn.net/suyiming/archive/2007/11/26/1902273.aspx

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內容均由用戶發(fā)布,不代表本站觀點,。請注意甄別內容中的聯(lián)系方式,、誘導購買等信息,謹防詐騙,。如發(fā)現(xiàn)有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多