上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用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();
}
}
}
}
分享到:
相关推荐
经测试绝对成功。请放心下载。这是一个实例,下载后请看查看说明文档。
Asp.net 备份和还原SQL Server及压缩Access数据库
备份SqlServer数据库 核心技术,还原SqlServer 核心技术等
需要注意的时还原,还原的时候问题大了,有别的用户使用数据库的时候无法还原,解决办法是在MASTER数据库中添加一个存储过程: createprockillspid(@dbnamevarchar(20)) as begin ...
ASP.NET 2.0+SQL Server 2005全程指南 目录 基础篇 第1章 ASP.NET概述及环境配置 1.1 认识ASRNET 1.1.1 .NET Framework框架 1.1.2 ASP.NET功能与特性 1.1.3 ASP.NET与ASP的区别 1.2 搭建ASP.NET开发环境 1.2.1...
功能如下: 备份、还原 SQL Server 数据表; 分离、附加 SQL Server 数据库; 备份、还原 Access 数据库;
asp.net2005+ sql server2005开发的系统。有数据库的,需要用户还原数据库...
本程序使用ASP.NET中的VB.NET编写,通过连接SQL server数据库,实现了对数据表的操作 2.程序所能实现的功能: 管理员登录:具有查询学生信息、录入学生信息、录入课程、录入课程成绩、具有重置所有身份人员密码的...
2. 还原数据库,数据库名称为“student”。 3. 在浏览器中输入http://localhost/student1/default.aspx就可以开始使用。 【注意事项】 使用时,请确保数据库中已经存在数据,否则部分界面运行可能会出现问题。
12.1 初步认识SQL Server 2005 187 12.1.1 SQL Server 2005的优势 187 12.1.2 SQL Server 2005的新特性 188 12.2 数据库操作 189 ...12.7.3 SQL Server 2005中的数据库可以在SQL Server 2000下直接使用吗 210
ASP.NET案例开发 使用方法: 读者在使用这些光盘文件之前,首先确保系统已经成功安装了IIS服务、MS Sqlserver2000数 据库、.NET FrameWork(FrameWork1.1)、Mdac(MDAC2.7)以及.NET FrameWork sdk开发工 具包等,...
Asp.net 备份、还原Ms SQLServer及压缩Access数据库
[Microsoft][ODBC SQL Driver][SQL Server]用户 'NewTonDiary' 登录失败。 /Conn.asp,行27 原因:SQL没做连接呢 先运行SQL服务器 先新建个数据库 咱们建的跟他一样吧,要不然还得改COMM。ASP里的连接。 d:\...
ASP.NET+SQL Server 2000实现,使用时用SQL Server 2000中的数据库还原功能对数据库文件进行还原就可以使用
给客户适用一周有余,尚未发现问题,ASP.NET + MS SQL 开发的票据管理信息系统,角色权限,开发说明书,使用说明书,齐全,可做为asp.net的模板,通用性极强,数据库需要还原,我使用的是MS SQL SERVER!web.config...
asp.net 物流管理系统 是一套完善的web设计管理系统,系统具有完整的源代码和数据库,系统主要采用B/S模式开发,开发环境为vs2010,数据库为sqlserver2008,或者以上版本都可以,使用c#语言开发。 二、功能介绍 (1)...
1.1.2 ASP.NET 与ASP 1.1.3 ASP.NET 开发工具 1.1.4 ASP.NET 客户端 1.1.5 ASP.NET 3.5 新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET 应用程序需框架 1.2.1 什么是.NET 应用程序框架 1.2.2 公共语言运行时(CLR) ...
1.1.2 ASP.NET与ASP 1.1.3 ASP.NET开发工具 1.1.4 ASP.NET客户端 1.1.5 ASP.NET 3.5新增控件 1.1.6 ASP.NET 3.5 AJAX 1.2 .NET应用程序需框架 1.2.1 什么是.NET应用程序框架 1.2.2 公共语言运行时(CLR) 1.2.3 .NET...