public bool DbRestore(string url) { bool result; if (!this.exepro()) { result = false; } else { Restore oRestore = new RestoreClass(); SQLServer oSQLServer = new SQLServerClass(); try { oSQLServer.LoginSecure = false; oSQLServer.Connect(this.server, this.uid, this.pwd); oRestore.Action = SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; oRestore.Database = this.database; oRestore.Files = url; oRestore.FileNumber = 1; oRestore.ReplaceDatabase = true; oRestore.SQLRestore(oSQLServer); result = true; } catch { result = false; } finally { oSQLServer.DisConnect(); } } return(result); }
/// <summary> /// 恢复数据库 /// </summary> /// <param name="dbName"></param> /// <param name="bakFile"></param> /// <remarks> /// 恢复前最好调用KillAllProcess关闭所有连接,否则恢复可能失败。 /// </remarks> /// <example> /// <code> /// SqlDmoHelper dmo = new SqlDmoHelper("(local)", "sa", "sa"); /// dmo.RestoreDB("test", @"d:\temp\database\test.bak"); /// </code> /// </example> public bool RestoreDB(string dbName, string bakFile) { try { Restore oRestore = new RestoreClass(); oRestore.Action = SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; oRestore.Database = dbName; oRestore.Files = bakFile; oRestore.FileNumber = 1; oRestore.ReplaceDatabase = true; oRestore.SQLRestore(sqlServer); return(true); } catch { return(false); } }
public string RestoreDatabase(string backuppath, string ServerName, string UserName, string Password, string strDbName, string strFileName) { #region 数据库的恢复的代码 SQLServer svr = new SQLServerClass(); try { svr.Connect(ServerName, UserName, Password); QueryResults qr = svr.EnumProcesses(-1); int iColPIDNum = -1; int iColDbName = -1; for (int i = 1; i <= qr.Columns; i++) { string strName = qr.get_ColumnName(i); if (strName.ToUpper().Trim() == "SPID") { iColPIDNum = i; } else if (strName.ToUpper().Trim() == "DBNAME") { iColDbName = i; } if (iColPIDNum != -1 && iColDbName != -1) break; } for (int i = 1; i <= qr.Rows; i++) { int lPID = qr.GetColumnLong(i, iColPIDNum); string strDBName = qr.GetColumnString(i, iColDbName); if (strDBName.ToUpper() == strDbName.ToUpper()) svr.KillProcess(lPID); } Restore res = new RestoreClass(); res.Action = 0; string path = backuppath + strFileName + ".config"; res.Files = path; res.Database = strDbName; res.ReplaceDatabase = true; res.SQLRestore(svr); return string.Empty; } catch (Exception err) { string message = err.Message.Replace("'", " "); message = message.Replace("\n", " "); message = message.Replace("\\", "/"); return message; } finally { svr.DisConnect(); } #endregion }
public bool StoreDatabase(string sFile, string sPath, string sDataBase) { bool flag = false; SQLServer serverObject = new SQLServerClass(); SQLDMO.Restore restore = new RestoreClass(); try { int num3; serverObject.LoginSecure = false; serverObject.Connect(this.Server, this.UserID, this.Password); QueryResults results = serverObject.EnumProcesses(-1); int column = -1; int num2 = -1; for (num3 = 1; num3 < results.Columns; num3++) { string str = results.get_ColumnName(num3); if (str.ToUpper().Trim() == "SPID") { column = num3; } else if (str.ToUpper().Trim() == "DBNAME") { num2 = num3; } if ((column != -1) && (num2 != -1)) { break; } } num3 = 1; while (num3 < results.Rows) { int columnLong = results.GetColumnLong(num3, column); if (results.GetColumnString(num3, num2).ToUpper() == sDataBase.ToUpper()) { serverObject.KillProcess(columnLong); } num3++; } QueryResults results2 = serverObject.ExecuteWithResults(string.Format("RESTORE FILELISTONLY FROM DISK = '{0}'", sFile), null); int num5 = 0; int num6 = 0; for (num3 = 1; num3 < results2.Columns; num3++) { if ("LOGICALNAME" == results2.get_ColumnName(num3).ToUpper()) { num5 = num3; } if ("PHYSICALNAME" == results2.get_ColumnName(num3).ToUpper()) { num6 = num3; } if ((num6 != 0) && (num5 != 0)) { break; } } StringBuilder builder = new StringBuilder(); for (num3 = 1; num3 <= results2.Rows; num3++) { builder.Append(string.Format(@"[{0}],[{1}\{2}]", results2.GetColumnString(num3, num5), sPath, Path.GetFileName(results2.GetColumnString(num3, num6)))); if (num3 != results2.Rows) { builder.Append(","); } } restore.Action = SQLDMO_RESTORE_TYPE.SQLDMORestore_Database; restore.Database = sDataBase; restore.Files = sFile; restore.FileNumber = 1; restore.ReplaceDatabase = false; restore.RelocateFiles = builder.ToString(); restore.SQLRestore(serverObject); Databases databases = serverObject.Databases; foreach (SQLDMO.Database database in databases) { if (database.Name == sDataBase) { return(true); } } return(flag); } catch (Exception exception) { Log.WriteLog(string.Format("还原数据库[{0}]:StoreDatabase(string sFile,string sPath,string sDataBase)", sDataBase), exception.Message); return(flag); } finally { serverObject.DisConnect(); } return(flag); }
private void hsRestore_Click(object sender, EventArgs e) { n = 0; var ca = new ConnectionAttributes(); ca.Server = DBReg.Server; //SE ca.Client = DRC.Client; ca.DatabasePath = txtRestoreDetinationDatabasePath.Text; ca.Password = DBReg.Password; ca.User = DBReg.User; ca.ConnectionType = DBReg.ConnectionType; ca.CharSet = DBReg.CharSet; ca.PacketSize = DBReg.PacketSize; ca.Port = DBReg.Port; string connstr = ConnectionStrings.Instance().MakeConnectionString(ca); lvRestoreMessage.Items.Clear(); var bu = new RestoreClass(connstr); bu.Restore.ServiceOutput += Restore_ServiceOutput; var lf = new List <FirebirdSql.Data.Services.FbBackupFile>(); for (int i = 0; i < lvRestore.Items.Count; i++) { ListViewItem lvi = lvRestore.Items[i]; FirebirdSql.Data.Services.FbBackupFile bf = (FirebirdSql.Data.Services.FbBackupFile)lvi.Tag; lf.Add(bf); } bu.SetFiles(lf.ToArray()); if (rbReplaceDatabase.Checked) { bu.AddOptions(FirebirdSql.Data.Services.FbRestoreFlags.Replace); } else { bu.AddOptions(FirebirdSql.Data.Services.FbRestoreFlags.Create); } if (cbRestoreNoIndices.Checked) { bu.AddOptions(FirebirdSql.Data.Services.FbRestoreFlags.DeactivateIndexes); } if (cbRestoreNoShadows.Checked) { bu.AddOptions(FirebirdSql.Data.Services.FbRestoreFlags.NoShadow); } if (cbRestoreInvidualCommit.Checked) { bu.AddOptions(FirebirdSql.Data.Services.FbRestoreFlags.IndividualCommit); } if (cbRestoreMetatdataOnly.Checked) { bu.AddOptions(FirebirdSql.Data.Services.FbRestoreFlags.MetaDataOnly); } if (cbRestoreNoVaildy.Checked) { bu.AddOptions(FirebirdSql.Data.Services.FbRestoreFlags.NoValidity); } if (cbRestoreUseAllSpace.Checked) { bu.AddOptions(FirebirdSql.Data.Services.FbRestoreFlags.UseAllSpace); } ConnectionPoolClass.Instance().CloseAllConnections(); if (ConnectionPoolClass.Instance().AktCON != null) { ConnectionPoolClass.Instance().AktCON.Close(); } bu.Execute(); DbExplorerForm.Instance().MakeDatabaseTree(true); }