数据库恢复
private void btnRebackDB_Click(object sender, EventArgs e) { if (this.txtReDBPath.Text.Trim().Length==0) { Msg.MsgBox("地址不能为空!"); return; } string _StringDB = ConfigurationManager.ConnectionStrings["db"].ConnectionString.ToString(); String[] strs = _StringDB.Split(';'); int _serverName0 = strs[0].IndexOf("="); string _serverName1 = strs[0].Substring(_serverName0 + 1); int _dbName0 = strs[1].IndexOf("="); string _dbName1 = strs[1].Substring(_dbName0 + 1); int _dbUser0 = strs[2].IndexOf("="); string _dbUser1 = strs[2].Substring(_dbUser0 + 1); int _dbPwd0 = strs[3].IndexOf("="); string _dbPwd1 = strs[3].Substring(_dbPwd0 + 1); string ServerName = _serverName1; string DbName = _dbName1; string DbUser = _dbUser1; string DbPwd = _dbPwd1; string GetFilePath = this.txtReDBPath.Text.Trim(); if (GetFilePath == null) return; DbRestore(ServerName, DbName,DbUser, DbPwd, GetFilePath); }
public static void DbRestore(string ServerName,string DbName, string DbUser, string DbPwd, string GetFilePath) { string connString = "Data Source=.;Initial Catalog=PPSManager;User ID=sa;pwd=123;"; string cmdString = "ALTER DATABASE [PPSManager] SET OFFLINE WITH ROLLBACK IMMEDIATE"; int result = SqlHelper.ExecuteNonQuery(connString, CommandType.Text, cmdString); SQLDMO.Restore oRestore = new SQLDMO.RestoreClass(); SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass(); try { oSQLServer.LoginSecure = false; oSQLServer.Connect(ServerName, DbUser, DbPwd); oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; oRestore.Database = DbName; oRestore.Files = GetFilePath; oRestore.FileNumber = 1; oRestore.ReplaceDatabase = true; oRestore.SQLRestore(oSQLServer); } catch { Msg.MsgBox("数据恢复失败!"); throw; } finally { oSQLServer.DisConnect(); Msg.MsgBox(GetFilePath + "数据恢复成功!"); } }
君子性非异也,善假于物也!