我的问题大概如下:
   在软件中,我想实现先删掉数据库中存在的A的数据库,但此时软件连接到了A数据库,这样的话就删不掉了;所以我就用
sql语句中的kill命令将连接到A数据库的用户进程杀死从而删除A数据库。删除成功后接着执行创建数据库A跟数据库A中的表
或存储过程等等,
   现在出现个问题,就是在连接master数据库创建A数据库可以成立,然后将软件连接到A数据库,看代码中的sqlconnection 的state是open,但执行创建A数据库中的表等等成员却不能执行,发生异常,说我的进程被远程强制删除,
该怎样解决?

解决方案 »

  1.   

    试试看:先使用sp_detach_db移除数据库,
    建立好数据库文件后再使用sp_attach_db附加数据库
      

  2.   

    能说具体点吗?
    试试看:先使用sp_detach_db移除数据库,
    建立好数据库文件后再使用sp_attach_db附加数据库这个能具体点吗?
      

  3.   

       // 先杀所用访问该数据库进程: 
                 // mast是master系统数据库的连接 
                //获取所有用户进程 
                string   strSQL   =   "select  spid   from master.dbo.sysprocesses   where   dbid=db_id( 'JCDG ') " ;
                SqlDataAdapter Da=new SqlDataAdapter(strSQL,mast );             DataTable spidTable=new DataTable(); 
                Da.Fill(spidTable);             SqlCommand   Cmd   =   new   SqlCommand(); 
                Cmd.CommandType   =   CommandType.Text; 
                Cmd.Connection   =   mast ;             for   (int iRow=0;iRow<spidTable.Rows.Count;iRow++) 
                {
                      mast.Open();
                      Cmd.CommandText= "kill   " + spidTable.Rows[iRow][0].ToString();   //强行关闭用户进程 
                      Cmd.ExecuteNonQuery();
                      mast.Close();
                }