//嘿嘿~ 因为刚注册,没有什么积分....对不起各位了,但是,我这贴也解决了一些删除用户连接、还原数据库的求助贴的问题呀...:)在C#编程中,用t-sql已经杀掉某一数据库实例的所有连接ID,并成功还原,但紧接着创建该数据库实例的某一连接并进行查询时,报"常规网络错误...",应该是该数据库实例没有启动,请问各位高手:如何用T-sql重启mssql某一数据库实例?sConnMaster = ConfigurationSettings.AppSettings["ConnectString"].Replace("database=DAM","database=Master");
oConn = new SqlConnection(sConnMaster);
SqlConnection oConn2 = new SqlConnection(sConnMaster);
sSql = "Select spid From master..sysprocesses Where dbid=db_id('DAM')";
oCmd=new SqlCommand(sSql,oConn);
oConn.Open();
oConn2.Open();
reader = oCmd.ExecuteReader();
while(reader.Read())
{
sSql = "KILL "+reader["spid"].ToString();
oCmd=new SqlCommand(sSql,oConn2);
oCmd.ExecuteNonQuery();
}
reader.Close();
oConn.Close();
oConn2.Close();string s = dg[dg.CurrentRowIndex, 1].ToString();
sSql = "EXEC sp_addumpdevice 'disk', 'AURORA', 'c:\test.bak' "
     + " restore database DAM from AURORA with Recovery "
     + " EXEC sp_dropdevice logicalname='AURORA'";
oConn.Open();
oCmd=new SqlCommand(sSql,oConn);
oCmd.ExecuteNonQuery();
oConn.Close();oConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectString"]);
oConn.Open();
oCmd = new SqlCommand("select * from bk_info",oConn);
oCmd.ExecuteNonQuery();//-------------------------------在此处报错。
oConn.Close();

解决方案 »

  1.   

    唉~ 大家的水平都跟我一样尔尔啊!!!其实问题解决了,其实还是可以连接的,只是还原后的数据库重新启动需要一小段时间,所以如果在还原后直接查询,应catch异常并返回查询语句段,几次后即可了。例:在查询的时候改写为:oConn = new SqlConnection(CommonMethod.GetConnectString());
    int iCount=0;repeat:try
    {
    DateTime dt = DateTime.Now;
    while(DateTime.Now.Subtract(dt) < new TimeSpan(0,0,0,10))
    {
    continue;
    }
    iCount++;
    adbk = new SqlDataAdapter("select * from bk_info", oConn);
    DataTable table = new DataTable();
    adbk.Fill(table);
    }
    catch
    {
    if (iCount<5)
    {
    goto repeat;
    }
    }