备份数据库:backup database schoolmanage to disk c:\schoolmanage.bak
恢复数据库:restore database schoolmanage from disk=@backfile
此种方法的问题是[恢复数据库]要杀掉其他用户的进程,但是杀掉进程的存储过程要建在MASTER数据库中,这样在数据库部署时不方便,因为部署数据库时不能在MASTER中建存储过程的,所以我想问的是这个恢复数据库到底这么做才是规范的?能提供源码最好。
恢复数据库:restore database schoolmanage from disk=@backfile
此种方法的问题是[恢复数据库]要杀掉其他用户的进程,但是杀掉进程的存储过程要建在MASTER数据库中,这样在数据库部署时不方便,因为部署数据库时不能在MASTER中建存储过程的,所以我想问的是这个恢复数据库到底这么做才是规范的?能提供源码最好。
解决方案 »
- ajax,两个updatepanel里各有一个timer,但只有一个刷新了?为什么
- 网页中图片不停展示,大侠们帮忙看一下代码是不是只能显示一次图片?
- gridview和SQL绑定
- 如何构建一个下拉框显示GridView内容
- JavaScrip的函数里,怎么应用后台的文本框的Text
- Label控件如何通过样式表来控制它的颜色\大小等
- 调试中出的错误,请大家帮忙分析一下!!
- vs 2003不能创建asp.net页面了,高手们进来看看!!!
- UrlRewriter 无后缀路径重写
- 运行aspx文件时,提示如下:
- DropDownList1的数据绑定问题
- 关于图片url的问题,路过的进来说说。。。。
去看下,我老师写的。
代码如下:asp.net 备份和恢复SQL SERVER 数据库
恢复数据库:
关键字:Alter Database 被恢复的数据库名 Set Offline with Rollback immediate;
restore database 被恢复的数据库名 from disk = '备份文件路径';
Alter Database 被恢复的数据库名 Set OnLine With rollback Immediate;/////////////////////
string sql = "Alter Database db Set Offline with Rollback immediate;"; //db 是要备份的数据库名
sql += "restore database db from disk = '" ;
sql += Server.MapPath("").ToString() +"\\";
sql += bakname + "'"; //bakname 是备份文件名
sql += "Alter Database db Set OnLine With rollback Immediate;";
try
{
连接 master 数据库 ;
执行 sql 语句;
Response.Write("<script language=javascript>alert('数据恢复成功!');</script>");
}
catch(Exception ex)
{
Response.Write("<script language=javascript>alert('数据恢复失败!');</script>");
this.Label2.Text = ex.ToString();
}备份数据库:关键字:backup database 被备份的数据库名 to disk ='备份文件路径';
//////////////////////
string sql = "backup database db to disk = '" + Server.MapPath("").ToString() +"\\"
+ bakname //备份文件名
+ System.DateTime.Now.DayOfYear.ToString()
+ System.DateTime.Now.Millisecond.ToString() + ".bak'";
try
{
连接 被备份的数据库 ;
执行 sql 语句; Response.Write("<script language=javascript>alert('备份成功!');location='restore.aspx'</script>");
}
catch(Exception ex)
{
Response.Write("<script language=javascript>alert('备份失败!');</script>");
this.Label2.Text = ex.ToString();
}
{
/// <summary>
/// SqlDataPrivater 数据连接层、业务逻辑层
/// </summary>
public class SqlDataProvider
{
private SqlConnection conn;
private SqlCommand sqlCommand;
private SqlDataAdapter sqlAdapter; public SqlDataProvider()
{
this.conn = new SqlConnection("server=(local);DataBase=master;Uid=sa;Pwd=;");
this.sqlAdapter = new SqlDataAdapter();
} /// <summary>
/// 打开数据连接
/// </summary>
private void Open()
{
if(this.conn.State == ConnectionState.Closed)
{
this.conn.Open();
return ;
}
} /// <summary>
/// 关闭数据连接
/// </summary>
private void Close()
{
if(this.conn.State == ConnectionState.Open)
{
this.conn.Close();
return ;
}
} /// <summary>
/// 执行T-SQL语句
/// </summary>
/// <param name="sqlString">查询字符串</param>
/// <returns>DataTable</returns>
public DataTable ExecSqlReturnTable(string sqlString)
{
DataTable table = new DataTable();
try
{
this.Open();
//设置命令对象的属性
this.sqlCommand = this.conn.CreateCommand();
this.sqlCommand.CommandText = sqlString; //命令绑定
this.sqlAdapter.SelectCommand = this.sqlCommand;
this.sqlAdapter.Fill(table);
}
catch
{
return null;
}
finally
{
this.Close();
}
return table;
}
备份:
string commstr = "'"+ TextBox1.Text + "'";
string backup_sql = "use schoolmanage2005;backup database schoolmanage2005 to disk=" + commstr + " with INIT;";
SqlCommand comm = new SqlCommand(backup_sql, conn);
try
{
conn.Open();
comm.ExecuteNonQuery();
Response.Write("<script language=javascript>alert('数据库备份成功,备份文件在C盘根目录下!')</script>");
}
catch
{
Response.Write("<script language=javascript>alert('数据库备份失败!')</script>");
}
finally
{
conn.Close();
}
恢复:
string path = "'"+FileUpload1.PostedFile.FileName+"'";
string sql = "use master;Alter Database schoolmanage2005 Set Offline with Rollback immediate;";
sql += "Restore Database schoolmanage2005 from disk = @bkfile;";
sql += "Alter Database schoolmanage2005 Set OnLine With rollback Immediate;";
SqlCommand comm = new SqlCommand(sql, conn);
comm.Parameters.AddWithValue("@bkfile", path);
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
错误信息:
无法打开备份设备 ''C:\schoolmanagebackup(2006-9-6).bak''。设备出现错误或设备脱机。详细信息请参阅 SQL Server 错误日志。
RESTORE DATABASE 操作异常终止。
已将数据库上下文改为 'master'。