数据库还原,从网上看到用以下方法清除用户连接。但不知其中sqlstr = "select spid from sysprocesses where dbid=(select dbid from sysdatabases where name like 'wjb')"这句是什么作用,为什么要这样啊。我看看了master数据库中并没什么。我的数据库如何仿照做?'清除用户连接
Private Sub killAllUser()
Dim sqlstr As String
Dim myadapter As SqlClient.SqlDataAdapter
Dim mydataset As New DataSet
Try
Me.mysqlconn.Open() '连接master数据库,打开连接
'查出所有用户的spid
sqlstr = "select spid from sysprocesses where dbid=(select dbid from sysdatabases where name like 'wjb')"
myadapter = New SqlClient.SqlDataAdapter(sqlstr, mysqlconn)
myadapter.Fill(mydataset, "sysprocesses") Dim i As Integer
Dim mysqlcomm As SqlClient.SqlCommand
For i = 0 To mydataset.Tables(0).Rows.Count - 1
'删除用户spid
Dim strkill As String
strkill = "kill " + CType(mydataset.Tables(0).Rows(i).Item(0), String)
mysqlcomm = New SqlClient.SqlCommand(strkill, mysqlconn)
mysqlcomm.ExecuteNonQuery()
Next
mysqlconn.Close()
Catch ex As Exception
If Not ConnectionState.Closed = ConnectionState.Closed Then
mysqlconn.Close()
End If
Throw ex
End Try End Sub
Private Sub killAllUser()
Dim sqlstr As String
Dim myadapter As SqlClient.SqlDataAdapter
Dim mydataset As New DataSet
Try
Me.mysqlconn.Open() '连接master数据库,打开连接
'查出所有用户的spid
sqlstr = "select spid from sysprocesses where dbid=(select dbid from sysdatabases where name like 'wjb')"
myadapter = New SqlClient.SqlDataAdapter(sqlstr, mysqlconn)
myadapter.Fill(mydataset, "sysprocesses") Dim i As Integer
Dim mysqlcomm As SqlClient.SqlCommand
For i = 0 To mydataset.Tables(0).Rows.Count - 1
'删除用户spid
Dim strkill As String
strkill = "kill " + CType(mydataset.Tables(0).Rows(i).Item(0), String)
mysqlcomm = New SqlClient.SqlCommand(strkill, mysqlconn)
mysqlcomm.ExecuteNonQuery()
Next
mysqlconn.Close()
Catch ex As Exception
If Not ConnectionState.Closed = ConnectionState.Closed Then
mysqlconn.Close()
End If
Throw ex
End Try End Sub
kill @spid
上述条件的所有 sysprocess 中的 spid 都要 kill 掉
我的数据库名为“myBOOK”,sqlstr = "select spid from sysprocesses where dbid=(select dbid from sysdatabases where name like 'wjb')"
这句怎么改?