编程技术 · 2022年3月30日

执行还原出错:Cannot use KILL to kill your own process

错误如图:
在执行还原前,需要Kill掉正在活动的进程,这样才能提高还原成功率,但在执行Kill时,部份电脑会显示如上的信息,部份机器又能正常执行,不会显示如上信息,但即然发生了,肯定是有问题

所以,先按照字面意思,先让自身连接跳转到主数据库master
pConnection.ChangeDatabase(DatabaseManager.cMasterDBName)
再执行Kill过程,果然正常了,虽然很快解决了,但也放在这里,下次不要跳坑。
先放上我的Kill代码:
Private Function killDBProcess(ByVal conn As SqlClient.SqlConnection, ByVal dbName As String) As SuccessFailResult
        Try
            Dim cmd As New SqlClient.SqlCommand
            cmd.CommandText = "SELECT spid FROM sysprocesses ,sysdatabases WHERE sysprocesses.dbid=sysdatabases.dbid AND sysdatabases.Name='" & dbName & "'"
            cmd.Connection = conn
            Dim dr As SqlClient.SqlDataReader
            dr = cmd.ExecuteReader()

            Dim list As New ArrayList
            Do While (dr.Read())
                list.Add(dr.GetInt16(0))
            Loop
            dr.Close()
            For i As Integer = 0 To list.Count - 1
                cmd.CommandText = String.Format("KILL {0}", list(i))
                cmd.ExecuteNonQuery()
            Next
            Return SuccessFailResult.mSuccess
        Catch ex As Exception
            Return SuccessFailResult.createFailResultAutoConcat("Kill db precess failed", ex)
        End Try
    End Function

最新电影,电视剧,尽在午夜剧场

电影电视剧午夜不寂寞