`

数据库备份问题

阅读更多
             
-- 备份数据库
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
 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    实验4 数据库备份与恢复实验 (2).docx

    实验4 数据库备份与恢复实验 数据库备份与恢复是数据库管理系统中非常重要的一部分。实验4 数据库备份与恢复实验旨在让学生掌握数据库备份与恢复的操作方法。 知识点1: 数据库备份 数据库备份是指将数据库中的...

    数据库备份与还原

    总结,数据库备份与还原是保障数据安全的关键步骤,合理的备份策略结合适当的备份工具,可以有效地降低数据丢失的风险,并在出现问题时迅速恢复。理解并掌握这些知识点,对于任何数据库管理员来说都是至关重要的。

    sql server 2012 备份集中的数据库备份与现有的xxx数据库不同

    SQL Server 2005备份的数据库还原到SQL Server ... 您可能感兴趣的文章:SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法SQL 2005 ERROR:3145 解决办法(备份集中的数据库备份与现有的数据库不同)

    C#带进度条数据库备份

    在IT行业中,数据库备份是确保数据安全和业务连续性的重要环节。C#作为.NET框架的主要编程语言,可以用于创建高效且用户友好的应用程序,包括带有进度条的数据库备份功能。以下将详细介绍如何利用C#实现这个功能,...

    Thinkphp数据库备份和还原

    数据库备份是为了防止数据丢失而创建的数据副本,这可能是由于硬件故障、软件错误、恶意攻击或其他不可预见的情况导致的。在Thinkphp中,我们可以利用内置的数据库工具或者第三方库来实现这一目标。 1. **Thinkphp...

    PostgreSQL数据库备份脚本

    **PostgreSQL数据库备份脚本详解** 在IT领域,数据库的安全性是至关重要的,定期备份是保障数据安全的重要手段。PostgreSQL作为一款强大的开源关系型数据库系统,提供了多种方式进行数据库的备份与恢复。本文将深入...

    易语言源码sql数据库备份恢复.rar

    值得注意的是,数据库备份与恢复涉及到的数据一致性问题。在执行备份时,需要确保没有其他事务正在修改数据,以保证备份的一致性。恢复过程中,同样需要在无干扰的情况下进行,以防止数据冲突。易语言提供的数据库...

    数据库备份软件 SqlServer备份

    数据库备份是IT领域中至关重要的任务,特别是在使用像SQL Server这样的大型关系型数据库管理系统时。本文将深入探讨SQL Server数据库备份的重要性和实现方法,以及如何使用特定的winform程序进行数据库备份。 首先...

    tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作

    tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份操作tp5数据库备份...

    ORACLE数据库备份用bat脚本

    首先,让我们理解"Oracle数据库备份用bat脚本"的概念。批处理脚本是Windows操作系统中的一种命令文件,可以包含一系列的DOS命令,用于自动化执行特定的任务。在Oracle数据库环境中,我们可以利用Oracle的数据泵工具...

    Sql Server数据库备份的另类解决方案

    本文将探讨一种另类的SQL Server数据库备份解决方案,旨在提供更灵活、高效的数据保护策略。 首先,我们要理解为什么需要另类备份方案。标准的SQL Server备份虽然全面,但在大规模数据库或高I/O环境下,可能会面临...

    实验4 数据库备份与恢复实验.pdf

    以上知识点详细阐述了MySQL数据库备份与恢复的基本操作、使用工具、以及各操作步骤。这些知识点对于数据库管理、维护和数据安全具有重要意义。通过本次实验,学生可以熟练掌握数据库的备份与恢复技能,了解不同备份...

    MSSQL数据库备份工具

    鉴于以上情况,此程序为广大站长提供了完善的 MSSql 数据库备份解决方案。它可以定时地对设置的 MSSql 数据库进行备份,并将备份后的文件通过 FTP 传输到本地计算机。 1、多线程,支持断点续传。 2、开机启动 + ...

    达梦数据库备份恢复使用

    达梦数据库备份恢复使用 达梦数据库备份恢复是数据库管理中非常重要的一部分。它可以确保数据库的安全和可靠性。本文将详细介绍达梦数据库备份恢复的步骤和方法。 一、归档配置 在进行数据库备份之前,需要配置...

    DB2 数据库备份还原

    在进行数据库备份和还原时,可能会遇到一些问题,例如备份失败、恢复失败等。这些问题可以通过检查备份日志和错误日志来解决。 结论 DB2 数据库备份还原是数据库管理中非常重要的一部分。使用 DB2 控制中心和...

    jsp数据库备份.rar

    【标题】"jsp数据库备份.rar" 提供的资源是一个基于JSP技术的数据库备份解决方案。JSP(JavaServer Pages)是Java平台上的一个用于开发动态Web应用的技术,它允许开发者在HTML或者XML文档中嵌入Java代码,实现服务器...

    c# asp.net实现sql server数据库备份

    在IT行业中,数据库备份是确保数据安全性和业务连续性的重要环节。C#和ASP.NET作为Microsoft .NET框架下的编程语言和Web开发平台,可以用来构建高效、可靠的数据库管理工具,其中包括数据库的备份功能。本教程将详细...

    数据库备份工具V5.0

    数据库备份是信息系统管理中的关键环节,它保护了数据的安全,防止意外损失,确保业务连续性。"数据库备份工具V5.0"是一个由VC6.0编程环境开发的实用程序,设计用于简化数据库备份过程。虽然这个工具的功能可能并未...

    数据库备份工具.zip

    数据库备份是信息系统管理中的关键环节,它保护了珍贵的数据免受意外损失,如硬件故障、软件错误或恶意攻击。在本场景中,我们讨论的是一个名为"数据库备份工具.zip"的压缩包,它包含了用于在Windows环境下进行...

Global site tag (gtag.js) - Google Analytics