asp.net备份和恢复数据库的方法示例
/**********************************************************************************
*
*功能说明:备份和恢复SQLServer数据库
*作者:刘功勋;
*版本:V0.1(C#2.0);时间:2007-1-1
*当使用SQLServer时,请引用COM组件中的,SQLDMO.dll组件
*当使用Access中,请浏览添加引用以下两个dll
* 引用C:\ProgramFiles\CommonFiles\System\ado\msadox.dll,该DLL包含ADOX命名空间
* 引用C:\ProgramFiles\CommonFiles\System\ado\msjro.dll,该DLL包含JRO命名空间
********************************************************************************/
usingSystem;
usingSystem.Data;
usingSystem.Configuration;
usingSystem.Web;
usingSystem.Web.Security;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.WebControls.WebParts;
usingSystem.Web.UI.HtmlControls;
usingSystem.IO;
usingADOX;//该命名空间包含创建ACCESS的类(方法)--解决方案==>引用==>添加引用==>游览找到.dll
usingJRO;//该命名空间包含压缩ACCESS的类(方法)
namespaceEC
{
///<summary>
///数据库恢复和备份
///</summary>
publicclassSqlBackObject
{
publicSqlBackObject()
{
//
//TODO:在此处添加构造函数逻辑
//
}
#regionSQL数据库备份
///<summary>
///SQL数据库备份
///</summary>
///<paramname="ServerIP">SQL服务器IP或(Localhost)</param>
///<paramname="LoginName">数据库登录名</param>
///<paramname="LoginPass">数据库登录密码</param>
///<paramname="DBName">数据库名</param>
///<paramname="BackPath">备份到的路径</param>
publicstaticvoidSQLBACK(stringServerIP,stringLoginName,stringLoginPass,stringDBName,stringBackPath)
{
SQLDMO.BackupoBackup=newSQLDMO.BackupClass();
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure=false;
oSQLServer.Connect(ServerIP,LoginName,LoginPass);
oBackup.Database=DBName;
oBackup.Files=BackPath;
oBackup.BackupSetName=DBName;
oBackup.BackupSetDescription="数据库备份";
oBackup.Initialize=true;
oBackup.SQLBackup(oSQLServer);
}
catch(Exceptione)
{
thrownewException(e.ToString());
}
finally
{
oSQLServer.DisConnect();
}
}
#endregion
#regionSQL恢复数据库
///<summary>
///SQL恢复数据库
///</summary>
///<paramname="ServerIP">SQL服务器IP或(Localhost)</param>
///<paramname="LoginName">数据库登录名</param>
///<paramname="LoginPass">数据库登录密码</param>
///<paramname="DBName">要还原的数据库名</param>
///<paramname="BackPath">数据库备份的路径</param>
publicstaticvoidSQLDbRestore(stringServerIP,stringLoginName,stringLoginPass,stringDBName,stringBackPath)
{
SQLDMO.Restoreorestore=newSQLDMO.RestoreClass();
SQLDMO.SQLServeroSQLServer=newSQLDMO.SQLServerClass();
try
{
oSQLServer.LoginSecure=false;
oSQLServer.Connect(ServerIP,LoginName,LoginPass);
orestore.Action=SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
orestore.Database=DBName;
orestore.Files=BackPath;
orestore.FileNumber=1;
orestore.ReplaceDatabase=true;
orestore.SQLRestore(oSQLServer);
}
catch(Exceptione)
{
thrownewException(e.ToString());
}
finally
{
oSQLServer.DisConnect();
}
}
#endregion
#region根据指定的文件名称创建Access数据库
///<summary>
///根据指定的文件名称创建数据
///</summary>
///<paramname="DBPath">绝对路径+文件名称</param>
publicstaticvoidCreateAccess(stringDBPath)
{
if(File.Exists(DBPath))//检查数据库是否已存在
{
thrownewException("目标数据库已存在,无法创建");
}
DBPath="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+DBPath;
//创建一个CatalogClass对象实例
ADOX.CatalogClasscat=newADOX.CatalogClass();
//使用CatalogClass对象的Create方法创建ACCESS数据库
cat.Create(DBPath);
}
#endregion
#region压缩Access数据库
///<summary>
///压缩Access数据库
///</summary>
///<paramname="DBPath">数据库绝对路径</param>
publicstaticvoidCompactAccess(stringDBPath)
{
if(!File.Exists(DBPath))
{
thrownewException("目标数据库不存在,无法压缩");
}
//声明临时数据库名称
stringtemp=DateTime.Now.Year.ToString();
temp+=DateTime.Now.Month.ToString();
temp+=DateTime.Now.Day.ToString();
temp+=DateTime.Now.Hour.ToString();
temp+=DateTime.Now.Minute.ToString();
temp+=DateTime.Now.Second.ToString()+".bak";
temp=DBPath.Substring(0,DBPath.LastIndexOf("\\")+1)+temp;
//定义临时数据库的连接字符串
stringtemp2="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+temp;
//定义目标数据库的连接字符串
stringDBPath2="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+DBPath;
//创建一个JetEngineClass对象的实例
JRO.JetEngineClassjt=newJRO.JetEngineClass();
//使用JetEngineClass对象的CompactDatabase方法压缩修复数据库
jt.CompactDatabase(DBPath2,temp2);
//拷贝临时数据库到目标数据库(覆盖)
File.Copy(temp,DBPath,true);
//最后删除临时数据库
File.Delete(temp);
}
#endregion
#region备份Access数据库
///<summary>
///备份Access数据库
///</summary>
///<paramname="srcPath">要备份的数据库绝对路径</param>
///<paramname="aimPath">备份到的数据库绝对路径</param>
///<returns></returns>
publicstaticvoidBackup(stringsrcPath,stringaimPath)
{
if(!File.Exists(srcPath))
{
thrownewException("源数据库不存在,无法备份");
}
try
{
File.Copy(srcPath,aimPath,true);
}
catch(IOExceptionixp)
{
thrownewException(ixp.ToString());
}
}
#endregion
#region还原Access数据库
///<summary>
///还原Access数据库
///</summary>
///<paramname="bakPath">备份的数据库绝对路径</param>
///<paramname="dbPath">要还原的数据库绝对路径</param>
publicstaticvoidRecoverAccess(stringbakPath,stringdbPath)
{
if(!File.Exists(bakPath))
{
thrownewException("备份数据库不存在,无法还原");
}
try
{
File.Copy(bakPath,dbPath,true);
}
catch(IOExceptionixp)
{
thrownewException(ixp.ToString());
}
}
#endregion
}
}
相关文章
- 解密.NET配置文件web.config
- .net让Oracle与ASP.NET实现无缝连接(oracleasp)
- 应用使用Linux环境部署.Net应用程序(linux部署.net)
- Net开发Oracle数据库新技术攻关挑战(.net开发oracle)
- ASP程序连接MySQL完美实现本地数据库操作(asp连接mysql地址)
- ASP如何使用代码登录MySQL数据库(asp登陆mysql代码)
- 使用MySQL轻松实现ASP数据库应用(asp数据库用mysql)
- 数据库ASP如何调用MySQL数据库(asp如何调用mysql)
- NET环境下 MySQL数据库应用实践(.net配合 mysql)
- net编程mySQL数据库从入门到精通(.net 编程mysql)
- 使用NET来连接MySQL数据库的简单方法(.net怎么连mysql)
- ASP.NET中数据库操作初步
- .net数据库连接池配置技巧(默认值)
- asp.net将图片上传到mysql数据库的方法
- asp.net删除,更新数据库方法
- Asp.net中使用Sqlite数据库的方法
- ASP.NET下备份与还原数据库代码
- Asp.Net网站优化系列之数据库的优化措施与索引优化方法
- ASP.NET连接ACCESS数据库的简单方法
- ASP.NET连接SQL数据库的简单实例代码
- asp.net通用的连接数据库实例代码
- ASP.NET数据库缓存依赖实例分析
- ASP.NET实现图片以二进制的形式存入数据库