广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    asp.net 因为数据库正在使用的解决方法

    2018-05-16 07:54:07 次阅读 稿源:互联网
    广告
    这个问题困惑我好长的时间,在网上搜,也没完全的解决方案,不是过于简单,就是乱说,有的论坛上还没人回答这个问题.今天我彻底解决这个问题,并在C#里测试完全通过.现在把他写出来,希望对朋友们有帮助(如要转载,记得给我版权哦.嘿嘿!!!).以下信息是综合网上的资料和我的实际问题,整理出来的.
    备份:
    在备份按钮里写:
    代码如下:

    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

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告