数据库恢复

    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 + "数据恢复成功!");               
            }

           
        }

 

posted on 2016-10-13 11:01  澜貓  阅读(91)  评论(0编辑  收藏  举报

导航