MS SQL Server还原备份

本文介绍了一个用于MSSQLServer数据库备份和还原的方法。备份过程简单直接,而还原时考虑到用户可能正在使用数据库,因此需要先断开所有连接再进行还原。文章提供了具体的实现代码。

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

一个还原备份MS SQL Server数据库的页面.原理很清晰:备份很简单,不用多说;还原时可能有用户正在使用,这时要强制断开所有连接,然后再还原数据库.具体代码如下:
    备份代码:
    /// <summary>
    /// 将数据库NorthWind备份到backup目录下的DB_年_月_日_时_分_秒.back
    /// </summary>
    protected void BackUp()
    {
        string fileName = Server.MapPath("backup/DB_"
            + DateTime.Now.ToString().Replace('-', '_').Replace(':', '_').Replace(' ', '_').Replace('/', '_') + ".bak");
        try
        {
            DbHelperSQL.ExecuteSql("backup database NorthWind to disk='" + fileName + "'");
            System.IO.FileInfo file = new System.IO.FileInfo(fileName);
            Response.Clear();
            Response.Charset = "GB2312";
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(file.Name));
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.ContentType = "application/ms-excel";
            Response.WriteFile(file.FullName);
            ApplicationInstance.CompleteRequest();
            Page.ClientScript.RegisterStartupScript(typeof(string), "message", "<script>alert('备份成功!')</script>");
        }
        catch (Exception ee)
        {
            Page.ClientScript.RegisterStartupScript(typeof(string), "message", "<script>alert('备份失败!/r/n原因:"
                + ee.Message.Replace("'", "").Replace("/"", "").Replace("/r", "").Replace("/n", "") + "')</script>");
        }
    }
    还原代码:
    /// <summary>
    /// 用备份文件fileName还原数据库NorthWind
    /// </summary>
    /// <param name="fileName"></param>
    protected void Restore(string fileName)
    {
        try
        {
            string sql = null;
            sql += "use master /r/n";
            sql += "declare cssp cursor for select spid from sysprocesses where dbid=db_id('NorthWind') /r/n";
            sql += "declare @sdid int /r/n";
            sql += "open cssp /r/n";
            sql += "    fetch next from cssp into @sdid /r/n";
            sql += "    while @@fetch_status = 0 /r/n";
            sql += "    begin /r/n";
            sql += "        exec('kill [email='+@sdid]'+@sdid[/email]) /r/n";
            sql += "        fetch next from cssp into @sdid /r/n";
            sql += "    end /r/n";
            sql += "close cssp /r/n";
            sql += "deallocate cssp /r/n";
            sql += "restore database NorthWind from disk='" + fileName + "'";
            DbHelperSQL.ExecuteSql(sql);
            Page.ClientScript.RegisterStartupScript(typeof(string), "message", "<script>alert('还原成功!')</script>");
        }
        catch (Exception ee)
        {
            Page.ClientScript.RegisterStartupScript(typeof(string), "message", "<script>alert('还原失败!原因:"
                + ee.Message.Replace("'", "").Replace("/"", "").Replace("/r", "").Replace("/n", "") + "')</script>");
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值