protected void Button2_Click(object sender, EventArgs e)
    {
        string strConn = ConfigurationManager.ConnectionStrings["highschoolConnectionString1"].ToString(); //定义Connection连接对象
        SqlConnection con = new SqlConnection(strConn);
        con.Open(); //同上        //除去所有的数据库进程
        SqlCommand cmd = new SqlCommand("SELECT Messages.MessageID FROM Admin INNER JOIN Messages ON Admin.AdminID = Messages.SchoolID WHERE (Messages.NamePlate = 1)", con); //定义command连接,查找两个表
        SqlDataReader dr; //定义一个SqlDataReader对象
        dr = cmd.ExecuteReader();//SqlDataReader对象dr绑定打开
        ArrayList list = new ArrayList();
        while (dr.Read()) //如果dr读不为空
        {
            list.Add(dr.GetInt32(0)); //装dr的第一行转成int类型并连接到list后面
        } //直到dr读空
        dr.Close(); //关闭SqlDataReader dr对象
        for (int i = 0; i < list.Count; i++) //
        {
            cmd = new SqlCommand(string.Format("KILL {0}", list), con);
            cmd.ExecuteNonQuery();
        }        SqlCommand cmdRT = new SqlCommand(); //建立Command连接对象
        cmdRT.CommandType = CommandType.Text;
        cmdRT.Connection = con;
        cmdRT.CommandText = @"restore database highschool from disk='D:\database'"; //还原数据库SQL语句,Archives是数据库名,d:\ba是路径        try
        {
            cmdRT.ExecuteNonQuery(); //执得语句
            ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "updateScript", "alert('恢复成功')", true);
        }
        catch
        {
            ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "updateScript", "alert('恢复失败')", true);
        }
        finally
        {
            con.Close(); //关闭连接
        }
    }错误在
 for (int i = 0; i < list.Count; i++) //
        {
            cmd = new SqlCommand(string.Format("KILL {0}", list), con);
            cmd.ExecuteNonQuery();
        }
这里.

解决方案 »

  1.   


    关键是出什么错啊估计是把自己也kill了出错,要把自己排除了,把Conn连接的库移为Master,不要连接到当前库
      

  2.   

    KILL {0}", 这个中间有空格?导致错误?
      

  3.   

    去掉空格后:错误:
    在 sysdatabases 中找不到数据库 'KILLSystem' 所对应的条目。没有找到具有该名称的条目。请确保正确地输入了该名称
      

  4.   

    你写的这个cmd   =   new   SqlCommand(string.Format("KILL   {0}",   list),   con); 
    是多个参数的替换;但你又在外面加了一个for循环,那就是说,又是一个参数的替换。
    应该错在这里,
    所以,用cmd   =   new   SqlCommand(string.Format("KILL   {0}",   list.item(行)(列)),   con);试试 
      

  5.   

    1:list 没有item 只有 list[索引],
    2:这样写的话,错误信息:只能终止用户进程。
      

  6.   

    那你这里cmd   =   new   SqlCommand(string.Format("KILL   {0}",   list),   con); 
    是要执行什么操作?
    list里面的都是messageID,这里你不是要停止一个给定的进程吗??
      

  7.   

    kill进程的话,是要root用户的,你是不是不是root用户啊?
    如果是这样的话,你要先启动这些进程,然后再kill。
      

  8.   

    总算弄出来了,答案原来如 cpio  所料 ,果然连接master没错。
    惭愧.