做毕业设计
遇到数据库恢复问题
数据库是SQL Server 2000
提示:“因为数据库正在使用,所以未能获得对数据库的排它访问权”
以前用Delphi写程序时也遇到过这个问题
当时解决了
现在遇到类似问题我估计是程序中还有数据库连接存在
但是不知道对于ADO.NET如何使数据库连接结束
比如:
SqlConnection con = new SqlConnection("Data Source=Server;Initial Catalog=test;User ID=sa;Password=123");
SqlCommand com = new SqlCommand("select * from login", con);
con.Open();
try
{
  SqlDataReader dr = com.ExecuteReader()
  if ( dr.Read() )
  { 
    //代码
  } 
  else
  {
    //代码
  }
}
catch(Exception ex)
{
  MessageBox.Show(ex.ToString());
}
finally
{
  dr.Close();
  con.Close();
}如果要在这段代码运行之后备份数据库
需要再做那些工作才能完全不连接到数据库
是上面的提示不出现
大家帮帮忙
谢谢了

解决方案 »

  1.   

    用dataset吧
    ----------------
    感觉有些情况下还是用SqlDataReader更好一点
    效率更高吧
      

  2.   

    详细介绍一下
    做毕业设计
    一个简单的中学成绩管理程序
    先是出现登陆框(loginFrm)
    上面的代码就是登陆框中一个确定Button的Click事件处理代码
    登陆结束
    进入主界面(mainFrm)
    然后选择数据恢复
    就出现上面我说的提示错误执行方式
    Application.Run(new loginFrm());
    Application.Run(new mainFrm());数据恢复代码
    private void btnRestore_Click(object sender, System.EventArgs e)
    {
      openDlg.ShowDialog();
      if( openDlg.FileName.Length != 0)
      {
        if(MessageBox.Show(this, "您确定要恢复数据库吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
        {
          string sqlStr = "RESTORE DATABASE test FROM DISK = \'" + openDlg.FileName + "\' WITH REPLACE";
          SqlConnection con = new SqlConnection(mainFrm.conNoDB);
          SqlCommand com = new SqlCommand(sqlStr, con);
          con.Open();
          try
          {
    com.ExecuteNonQuery();
    MessageBox.Show("数据库已成功恢复!");
          }
          catch(Exception ex)
          {
    MessageBox.Show(ex.ToString());
          }
          finally
          {
    con.Close();
          }
       }
       openDlg.FileName = "";
    }
      

  3.   

    Initial Catalog=test
    换master好了
      

  4.   

    最好是再写一个存储过程,Kill所有连在test上面的用户
      

  5.   

    问题解决了
    二处问题
    一处像antoniusguo(anton)说的
    另一处在连接池上
    看了这篇文章
    http://www.mikecat.net/blogview.asp?logID=1265
    需要把连接字符串改为
    "Data Source=Server;Initial Catalog=test;User ID=sa;Password=123;Pooling=False"
    加上Pooling=False谢谢大家帮忙