用ASP.NET还原与恢复Sql server_实用技巧

  上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用SQLDMO实现的,只要添加SQLDMO引用就好了,然后利用下边的类的方法就可以实现了。

  我把原作者的类扩充了一下,可以自动识别web.config里 的数据库连接字符串,可以通过变量设置还原恢复的信息。

  需要注意的时还原,还原的时候问题最大了,有别的用户使用数据库的时候无法还原,解决办法就是在MASTER数据库中添加一个存储过程:

  create proc killspid (@dbname varchar(20))
  as begin declare @sql nvarchar(500)
  declare @spid int set @sql='declare getspid cursor for select spid from sysprocesses where dbid=db_id('''+@dbname+''')' exec (@sql)
  open getspid fetch next from getspid into @spid while @@fetch_status<>-1 begin exec('kill '+@spid)
  fetch next from getspid into @spid end close getspid deallocate getspid end GO

  在还原之前先执行这个存储过程,需要传递dbname,就是你的数据库的名字。下边是类的原代码:(web.config里的数据库连接字符串是constr)

    using System;
    using System.Configuration;
    using System.Data.SqlClient;
    using System.Data;
    namespace web.base_class
    ...{
    /**////
     /// DbOper类,主要应用SQLDMO实现对Microsoft SQL Server数据库的备份和恢复
    ///
     public class DbOper
    ...{
    private string server;
    private string uid;
    private string pwd;
    private string database;
    private string conn;
    /**////
     /// DbOper类的构造函数
    ///
     public DbOper()
    ...{
    conn=System.Configuration.ConfigurationSettings.AppSettings["constr"].ToString();    server=cut(conn,"server=",";");
    uid=cut(conn,"uid=",";");
    pwd=cut(conn,"pwd=",";");
    database=cut(conn,"database=",";");
    }
   public string cut(string str,string bg,string ed)
    ...{
    string sub;
    sub=str.Substring(str.IndexOf(bg)+bg.Length);
    sub=sub.Substring(0,sub.IndexOf(";"));
    return sub;
    }
   /**////
     /// 数据库备份
    ///
     public bool DbBackup(string url)
    ...{    SQLDMO.Backup oBackup = new SQLDMO.BackupClass();
    SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
    try
    ...{
    oSQLServer.LoginSecure = false;
    oSQLServer.Connect(server,uid, pwd);
    oBackup.Action = SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
    oBackup.Database = database;
    oBackup.Files = url;//"d:\Northwind.bak";
    oBackup.BackupSetName = database;
    oBackup.BackupSetDescription = "数据库备份";    oBackup.Initialize = true;    oBackup.SQLBackup(oSQLServer);
    return true;
    }
   catch
    ...{
    return false;
    throw;
    }
   finally
   ...{
    oSQLServer.DisConnect();
    }
   }
///数据库恢复 ///
  public string DbRestore(string url)
 { if(exepro()!=true)
//执行存储过程 { return "操作失败"; }
else { SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
 SQLDMO.SQLServer oSQLServer = new SQLDMO.SQLServerClass();
 try { oSQLServer.LoginSecure = false; oSQLServer.Connect(server, uid, pwd);
 oRestore.Action = SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
 oRestore.Database = database;
 oRestore.Files = url;
//@"d:\Northwind.bak";
 oRestore.FileNumber = 1;
 oRestore.ReplaceDatabase = true;
 oRestore.SQLRestore(oSQLServer);
 return "ok"; } catch(Exception e)
 { return "恢复数据库失败";
 throw;
 } finally { oSQLServer.DisConnect();
 } } }
    private bool exepro()
 { SqlConnection conn1 = new SqlConnection("server="+server+";uid="+uid+";pwd="+pwd+";database=master");
 SqlCommand cmd = new SqlCommand("killspid",conn1);
 cmd.CommandType = CommandType.StoredProcedure;
 cmd.Parameters.Add("@dbname","port");
 try { conn1.Open();
 cmd.ExecuteNonQuery();
 return true;
 }
catch(Exception ex)
 { return false;
 } finally
 {
conn1.Close();
 }
}
}
}

时间: 2024-09-20 05:56:46

用ASP.NET还原与恢复Sql server_实用技巧的相关文章

用ASP.NET还原与恢复Sql server

asp.net|server|sql|恢复 上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用SQLDMO实现的,只要添加SQLDMO引用就好了,然后利用下边的类的方法就可以实现了. 我把原作者的类扩充了一下,可以自动识别web.config里 的数据库连接字符串,可以通过变量设置还原恢复的信息. 需要注意的时还原,还原的时候问题最大了,有别的用户使用数据库的时候无法还原,解决办法就是在MASTER数据库中添加一个存储过程: create proc killspid (@dbnam

用ASP.NET还原与恢复SQL Server数据库

asp.net|server|恢复|数据|数据库 需要注意的是还原,还原的时候问题最大了,有别的用户使用数据库的时候无法还原,解决办法就是在MASTER数据库中添加一个存储过程: create proc killspid (@dbname varchar(20))asbegindeclare @sql nvarchar(500)declare @spid intset @sql='declare getspid cursor forselect spid from sysprocesses wh

ASP.NET2.0数据库入门之SQL Server_实用技巧

因为Access并不真正为高性能应用程序服务,所以一个希望有多个同时连接用户的站点必须部署一个比Access更适合的数据源.本文将讲述如何从Microsoft SQL Server(一种企业级RDMS)中获取数据. SQL Server完全版包括了三个部分.第一个是引擎,用于实际组织数据以及针对命令响应进行读取和写入操作.第二个是开发人员的工具软件包,用于对数据库进行操作,例如Query Analyzer和Data Transformation Services.最后一个是用于管理数据的工具,包

asp.net 数据库连接类代码(SQL)_实用技巧

复制代码 代码如下: public class SqlOperation { #region 属性 /// <summary> /// 保存在Web.config中的连接字符串 /// </summary> protected static string connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["hao"].ConnectionString; /

用Asp.net还原与恢复sqlserver数据库

上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用SQLDMO实现的,只要添加SQLDMO引用就好了,然后利用下边的类的方法就可以实现了. 我把原作者的类扩充了一下,可以自动识别web.config里 的数据库连接字符串,可以通过变量设置还原恢复的信息. 需要注意的时还原,还原的时候问题最大了,有别的用户使用数据库的时候无法还原,解决办法就是在MASTER数据库中添加一个存储过程: createprockillspid(@dbnamevarchar(20)) as begin de

Win 2000下ASP.NET开发环境的配置_实用技巧

Win 2000下ASP.NET的配置 Win 2000(包括Professional,Server和Advanced Server)在默认情况下是不支持ASP.NET的.必须对它进行一个环境的配置. 客户端 SQL Server .NET 数据提供程序 Microsoft 数据访问组件 (MDAC) 2.6 或更高版本 对系统管理信息的访问 Windows Management Instrumentation (WMI)(在 Windows 2000操作系统一起安装)COM+ 服务 Windo

asp.net页面SqlCacheDependency缓存实例_实用技巧

缓存技术是asp.net程序设计中非常实用的技术,也是大型web程序设计中比较常见的技术.本文就以实例形式对此加以说明.具体如下: asp.net页面的SqlCacheDependency Sql缓存: Cahce/SqlCachePage.aspx页面代码如下: <%@ Page Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile=&qu

SQL Server LocalDB 在 ASP.NET中的应用介绍_实用技巧

我相信世界总是会向更好的方向发展,今年的维也纳新年音乐会没有往年的明星级指挥,但是它通过回归奥地利的本质,以更传统的聚合法则,让过往的艺术家们一代代创造的灿烂,在新的指挥手中,迸发出更深邃的音节.在此,也祝大家新年快乐.如同交响乐一样,构造软件系统不一定必须某个强大的明星驱动,我们站在历代ADO.NET的肩膀上,更好地回归到SQL Server的核心开发:SQL Server LocalDB 在 ASP.NET中的应用. 使用SQL Server LocalDB的优势: 快速部署完整的SQL S

asp.net Accee数据库连接不稳定解决方案_实用技巧

错误信息如下:写了如下的一个方法来返回数据操作影响的行数:如下 复制代码 代码如下: private int GetReturnValue(string sStr, string conn) { OleDbConnection odbconn = AccessHelp(conn); OleDbCommand odbcmd = new OleDbCommand(sStr, odbconn); return odbcmd.ExecuteNonQuery(); } 用下面的一个方法来调用这个类: 复制