执行还原出错: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