-- 备份数据库
backup database db_CSManage to disk='c:\backup.bak'
-- 还原数据库,必须先备份该数据库的日志文件到原先的备份文件中
backup log db_CSManage to disk='c:\backup.bak'
restore database db_CSManage from disk='c:\backup.bak'
其中db_CSManage是数据库名称,disk后的路径即是备份文件存储的路径。
知道了SQL语句,那么在.NET代码中就容易多了,备份的.NET代码如下:
当恢复模型为 SIMPLE 时,不允许使用 BACKUP LOG 语句
解决方法:
进
入MSSQL的企业管理器,选择相应的数据库实体,点击右键选择"属性",选择"选项"标签页,把故障还原模型修改成"大容量日志记录的",然后重新备份
一下!
try
{
if (txtPath.Text != "" && txtName122.Text != "")
{
getSqlConnection geCon = new getSqlConnection();
SqlConnection con = geCon.GetCon();
string strBacl = "backup database db_CSManage to disk='" + txtPath.Text.Trim() + "\\" + txtName.Text.Trim() + ".bak'";
SqlCommand Cmd = new SqlCommand(strBacl, con);
if (Cmd.ExecuteNonQuery() != 0)
{
MessageBox.Show("数据备份成功!", "提示框", MessageBoxButtons.OK, MessageBoxIcon.Information);
this.Close();
}
else
{
MessageBox.Show("数据备份失败!", "提示框", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
else
{
MessageBox.Show("请填写备份的正确位置及文件名!", "提示框", MessageBoxButtons.OK, MessageBoxIcon.Information);
}// end
}
catch (Exception ee)
{
MessageBox.Show(ee.Message.ToString());
}
以下是还原数据库的代码,在示例中发现开头得先删除与该数据库相关的进程,然后在还原之前得先把数据库日志备份到开始的备份文件中,然后才还原备
份文件,要不然会出错的,代码如下:
if (textPaht.Text != "")
{
getSqlConnection geCon = new getSqlConnection();
SqlConnection con = geCon.GetCon();
if (con.State == ConnectionState.Open)
{
con.Close();
}
string DateStr = "Data Source=niunan\\sqlexpress;Database=master;User id=sa;PWD=123456";
SqlConnection conn = new SqlConnection(DateStr);
conn.Open();
//-------------------杀掉所有连接 db_CSManage 数据库的进程--------------
string strSQL = "select spid from master..sysprocesses where dbid=db_id( 'db_CSManage') ";
SqlDataAdapter Da = new SqlDataAdapter(strSQL, conn);
DataTable spidTable = new DataTable();
Da.Fill(spidTable);
SqlCommand Cmd = new SqlCommand();
Cmd.CommandType = CommandType.Text;
Cmd.Connection = conn;
for (int iRow = 0; iRow <= spidTable.Rows.Count - 1; iRow++)
{
Cmd.CommandText = "kill " + spidTable.Rows[iRow][0].ToString(); //强行关闭用户进程
Cmd.ExecuteNonQuery();
}
conn.Close();
conn.Dispose();
//--------------------------------------------------------------------
SqlConnection sqlcon = new SqlConnection(DateStr);
sqlcon.Open();
string sql = "backup log db_CSManage to disk='" + textPaht.Text.Trim() + "' restore database db_CSManage from disk='" + textPaht.Text.Trim() + "'";
SqlCommand sqlCmd = new SqlCommand(sql, sqlcon);
sqlCmd.ExecuteNonQuery();
sqlCmd.Dispose();
sqlcon.Close();
sqlcon.Dispose();
MessageBox.Show("数据还原成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
MessageBox.Show("为了必免数据丢失,在数据库还原后将关闭整个系统。");
Application.Exit();
}
else
{
MessageBox.Show("请选择备份文件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
因为数据库正在使用,所以未能获得对数据库的排它访问权的解决方法(转自百度空间)。
在备份按钮里写:
protected void Button1_Click(object sender, EventArgs e)
{
string path = "e:\\MAZ数据库备份\\" + Menu+ ".bak";
if (File.Exists(path))
{
File.Delete(path);//注意,这个步骤很重要,如果重复,在备份的数据,就会变成,
//你刚开始的数据,所以每次都要先删除.
}
if (!File.Exists(path))
{
FileStream fs = File.Create(path);
fs.Close();
}
string backupstr="backup database Test to disk='"+path+"';";
SqlConnection con = new SqlConnection("server=localhost;database=Menu;uid=sa;pwd=sa;");
SqlCommand cmd = new SqlCommand(backupstr, con);
try
{
con.Open();
cmd.ExecuteNonQuery();
MessageBox.Show("备份成功!");
connection.Close();
}
catch (Exception ex)
{
string stringError = ex.ToString();
MessageBox.Show("备份失败!");
connection.Close();
}
}
在还原按钮里写:
protected void Button2_Click(object sender, EventArgs e)
{
string path = "e:\\MAZ数据库备份\\" + Menu+ ".bak";
string connectionStringTest = "server=localhost ;database=master;uid=sa;pwd=sa";
SqlConnection connection = new SqlConnection(connectionStringTest);
string backupstr = "restore database Menu from disk='" + path + "';";
try
{
string sql = "exec killspid '" + Menu+ "'";//这个很关键,要不然就出现题目上的错误了
SqlCommand cmd = new SqlCommand(sql, connection);
connection.Open();
cmd.ExecuteNonQuery();
cmd = new SqlCommand(backupstr, connection);
cmd.ExecuteNonQuery();
MessageBox.Show("恢复成功!");
connection.Close();
}
catch (Exception ex)
{
string stringError = ex.ToString();
MessageBox.Show("恢复失败!");
connection.Close();
}
}
存储过程 killspid
create proc killspid (@dbname varchar(20))
as
begin
declare @sql nvarchar(500)
declare @spid int
set @sql='declare getspid cursor for
select spid from sysprocesses where dbid=db_id('''+@dbname+''')'
exec (@sql)
open getspid
fetch next from getspid into @spid
while @@fetch_status < >-1
begin
exec('kill '+@spid)
fetch next from getspid into @spid
end
close getspid
deallocate getspid
end
GO
分享到:
相关推荐
数据库备份数据库备份数据库备份数据库备份数据库备份数据库备份
数据库备份 数据库备份 数据库备份 数据库备份 数据库备份 数据库备份
数据库备份语句 数据库备份语句 数据库备份语句 数据库备份语句 数据库备份语句
tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份...
SQL Server 2005备份的数据库还原到SQL Server ... 您可能感兴趣的文章:SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法SQL 2005 ERROR:3145 解决办法(备份集中的数据库备份与现有的数据库不同)
Oracle数据库备份脚本 用于备份数据库里的所有数据
Thinkphp数据库备份和还原
MySQL 数据库备份 和 恢复
oracle和MySQL数据库备份脚本oracle和MySQL数据库备份脚本
PostgreSQL数据库备份脚本,结合系统计划任务可以实现数据库的自动化备份。密码直接设置于脚本当中。
鉴于以上情况,此程序为广大站长提供了完善的 MSSql 数据库备份解决方案。它可以定时地对设置的 MSSql 数据库进行备份,并将备份后的文件通过 FTP 传输到本地计算机。 1、多线程,支持断点续传。 2、开机启动 + ...
在前不久落幕的2007中华医院信息网络大会中,数据库备份问题明显成为行业内的一大焦点。随着对数据库备份重要性的了解,此次会议中广大医卫行业信息人员对数据库备份产品也表现出来的高度关注,但是这些重视却也是...
数据库备份,
实验4 数据库备份与恢复实验
数据库备份和恢复数据库备份和恢复数据库备份和恢复数据库备份和恢复数据库备份和恢复
数据库备份 在计划任务里添加一条命令 执行这个脚本就OK了 例如 :00 21 * * * /www/mysqlbak/mysql.sh
C#数据库操作_数据库备份_ C#数据库操作_数据库备份_ C#数据库操作_数据库备份_ C#数据库操作_数据库备份
Mysql数据库备份批处理Mysql数据库备份批处理Mysql数据库备份批处理Mysql数据库备份批处理
当电脑断电以及数据库东西丢失时,需要的技术问题,此代码可以帮助你学会数据库的备份还还原。
Server 2005管理与维护 第三章.数据库备份与恢复技术.PPT