用SQLDMO备份还原数据库

本文介绍如何使用SQLDMO.DLL在ASP.NET中实现数据库的备份与还原功能,解决了传统SQL备份方法存在的权限及数据库连接问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于用SQL语句中的BACKUP DATABASE 数据库名 TO DISK =存储路径 在ASP.NET或其他编程语言中存在权限不够不能读写存储路径的问题 或者可以备份但在还原时由于正在打开数据库连接因此不能够正确还原

针对以上问题 可以通过SQLServer的SQLDMO.DLL来实现备份与还原
以下是从网络上找的材料写的ASP.NET中的备份与还原的类 经实验可以实现备份与还原
首先当然得添加引用 在网站-》添加引用 COM 找到 MICROSOFT SQLSERVER SQLDMO library 添加
然后添加一个类DBService
内容如下
using  System;
using  System.Data;
using  System.Configuration;
using  System.Web;
using  System.Web.Security;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.WebControls.WebParts;
using  System.Web.UI.HtmlControls;

/// <summary>
/// DBService 的摘要说明
/// </summary>

public   class  DBService
{
public DBService()
{
  
//
  
// TODO: 在此处添加构造函数逻辑
  
//
}

/// <summary>
/// 数据库备份
/// </summary>
/// <param name="sqlServer">SQLServer数据库服务器</param>
/// <param name="userid">用户名</param>
/// <param name="password">用户密码</param>
/// <param name="database">要备份的数据库</param>
/// <param name="filePath">存储备份文件路径</param>
/// <returns>是否备份成功</returns>

    public static bool DbBackup(string sqlServer,string userid,string password,string database,string filePath)
    
{
        
//声明变量isOk用来返回执行结果
        bool isOk;
        SQLDMO.Backup oBackup 
= new SQLDMO.BackupClass();
        SQLDMO.SQLServer oSQLServer 
= new SQLDMO.SQLServerClass();
        
try
        
{
            oSQLServer.LoginSecure 
= false;
            oSQLServer.Connect(sqlServer,userid, password);
            oBackup.Action 
= SQLDMO.SQLDMO_BACKUP_TYPE.SQLDMOBackup_Database;
            oBackup.Database 
= database;
            oBackup.Files 
= filePath;
            oBackup.BackupSetName 
= database;
            oBackup.BackupSetDescription 
= "数据库备份";
            oBackup.Initialize 
= true;
            oBackup.SQLBackup(oSQLServer);
            isOk 
= true;//执行成功
        }

        
catch
        
{
            isOk 
= false;//执行失败
            throw;
        }

        
finally
        
{
            oSQLServer.DisConnect();
        }

        
//返回结果
        return isOk;
    }

    
/// <summary> 
    
/// 数据库恢复 
    
/// </summary>
    
/// <param name="sqlServer">SQLServer数据库服务器</param>
    
/// <param name="userid">用户名</param>
    
/// <param name="password">用户密码</param>
    
/// <param name="database">要还原的数据库</param>
    
/// <param name="filePath">存储备份文件路径</param>
    
/// <returns>是否还原成功</returns>

    public static bool DbRestore(string sqlServer, string userid, string password, string database, string filePath)
    
{
        
bool isOk;//变量用来返回执行结果
        SQLDMO.Restore oRestore = new SQLDMO.RestoreClass();
        SQLDMO.SQLServer oSQLServer 
= new SQLDMO.SQLServerClass();
        
try
        
{
            oSQLServer.LoginSecure 
= false;
            oSQLServer.Connect(sqlServer, userid, password);
            oRestore.Action 
= SQLDMO.SQLDMO_RESTORE_TYPE.SQLDMORestore_Database;
            oRestore.Database 
= database;
            oRestore.Files 
= filePath;
            oRestore.FileNumber 
= 1;
            oRestore.ReplaceDatabase 
= true;
            oRestore.SQLRestore(oSQLServer);
            isOk 
= true;
        }

        
catch
        
{
            isOk 
= false;
            
throw;
        }

        
finally
        
{
            oSQLServer.DisConnect();
        }

        
return isOk;
    }

}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值