MS SQL Server还原备份
来源:互联网 发布:大连理工软件学院好吗 编辑:程序博客网 时间:2024/06/05 04:40
一个还原备份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>");
}
}
备份代码:
/// <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>");
}
}
- MS SQL Server还原备份
- MS SQL SERVER数据库备份BAK还原数据库
- SQL server备份还原
- MS SQL数据批量备份还原(适用于MS SQL 2005+)
- MS SQL Server 2000 数据库使用备份还原造成dbo登录名丢失解决法
- MS SQL Server 2000 数据库使用备份还原造成dbo登录名丢失解决法(转)
- 还原 SQL Server 备份数据库文件
- oracle,sql server 备份还原
- sql server 备份与还原
- Sql Server 备份/还原数据库
- SQL Server备份还原功能
- SQL Server备份与还原
- Sql server备份与还原
- Sql Server备份与还原
- SQL Server 备份与还原
- SQL Server数据库备份还原
- sql server 数据库备份还原
- sql server备份、还原数据库
- 数据访问层——表操作的封装
- 页面控制
- Java常量定义需要注意的两点
- 多线程非递归实现的树控件
- FLV转MPG和转成其它格式的转码方法
- MS SQL Server还原备份
- 在线管理
- 后台动态创建控件随感
- UDP/TCP 打洞
- 交换网络问题
- 局域网中具有相同mac地址的主机试验
- 微型Web服务器
- The first blog.
- CGI