数据库恢复
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 + "数据恢复成功!");
}
}
君子性非异也,善假于物也!
浙公网安备 33010602011771号