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

 更新时间:2009年02月20日 02:01:19   作者:  
因为数据库正在使用,所以未能获得对数据库的排它访问权?
这个问题困惑我好长的时间,在网上搜,也没完全的解决方案,不是过于简单,就是乱说,有的论坛上还没人回答这个问题.今天我彻底解决这个问题,并在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

相关文章

  • asp.net使用母版页中使用ajax脚本取数据

    asp.net使用母版页中使用ajax脚本取数据

    因母版页继承自UserControl,我们无法像正常页面那样使用Jquey或Ajax的PageMethods等无刷新方法取数据。不过可以使用ajax提供的Sys.Net.WebRequest来解决这一问题。
    2010-09-09
  • EF使用Code First模式给实体类添加复合主键

    EF使用Code First模式给实体类添加复合主键

    这篇文章介绍了EF使用Code First模式给实体类添加复合主键的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • .NetCore实现上传多文件的示例详解

    .NetCore实现上传多文件的示例详解

    本章和大家分享的是.NetCore的MVC框架上传文件的示例,主要讲的内容有:form方式提交上传,ajax上传,ajax提交+上传进度效果,Task并行处理+ajax提交+上传进度,对大家非常有帮助,感兴趣的朋友跟随小编一起学习吧
    2017-04-04
  • C#保存上传来的图片示例代码

    C#保存上传来的图片示例代码

    保存上传图片的方法有很多,在接下来的文章中为大家详细介绍下使用C#是如何做到的,感兴趣的朋友不要错过
    2013-11-11
  • IIS7伪静态web.config配置的方法和规则

    IIS7伪静态web.config配置的方法和规则

    本文主要介绍IIS7上配置伪静态的超简单的新方法,安装URLRewrite插件,配置web.config即可。
    2016-04-04
  • ASP.Net中表单POST到其他页面的方法分享

    ASP.Net中表单POST到其他页面的方法分享

    这篇文章主要介绍了ASP.Net中表单POST到其他页面的方法,需要的朋友可以参考下
    2014-02-02
  • Asp.net TextBox的TextChanged事件使用介绍

    Asp.net TextBox的TextChanged事件使用介绍

    动态创建的控件是如何加载视图状态,还提到ProcessPostData方法的调用,这里我就用TextBox的TextChanged事件来说说视图数据的加载以及事件的触发
    2012-12-12
  • 详解.NET Core 3.0中的新变化

    详解.NET Core 3.0中的新变化

    这篇文章主要介绍了详解.NET Core 3.0中的新变化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-03-03
  • ASP.NET MVC4之js css文件合并功能(3)

    ASP.NET MVC4之js css文件合并功能(3)

    这篇文章主要介绍了ASP.NET MVC4之js css文件合并功能,使用BundleConfig可以将多个文件请求和并成一个请求,去除文件中的一些注释,空白,起到优化网站的作用,需要的朋友可以参考下
    2015-08-08
  • C# 实现抓取网站页面内容的实例方法

    C# 实现抓取网站页面内容的实例方法

    这篇文章介绍了C# 实现抓取网站页面内容的实例方法,有需要的朋友可以参考一下
    2013-08-08

最新评论