我已经在这个网站上下翻过但我找不到我的WebService连接池的用途。使用应用程序,我在我的服务上调用WebMethod,然后触发下面的代码。
Using cn As New SqlConnection(ConnectionString)
Try
Using cmd As New SqlCommand()
cmd.Connection = cn
cmd.CommandType = CommandType.Text
cmd.CommandText = "select * " &
" from Customer " &
" where CustomerID=@CustomerID and active=1"
cmd.Parameters.Add("@CustomerID", SqlDbType.Int, 4)
cmd.Parameters("@CustomerID").Value = CustomerID
End Using
da = New SqlDataAdapter(cmd)
da.Fill(ds, "Customer")
Catch ex As Exception
Throw ex
Finally
If cn.State = ConnectionState.Open Then
cn.Close()
End If
End Try
End Using
然后在我的SSMS中,我点开下面的内容,我可以在我的数据库上看到我仍然有一个与“睡觉”的“活动”连接。状态
SELECT
DB_NAME(dbid) as DBName,
COUNT(dbid) as NumberOfConnections,
loginame as LoginName,
status
FROM
sys.sysprocesses
WHERE
dbid = 16 'my dbid
GROUP BY
dbid, loginame, status
我传递了类似的方法,而我的NumberOfConnections只是继续构建。帮助
DBNAME | NumberOfConnections | LoginName | Status
MyDB | 1 | jgritten | sleeping
答案 0 :(得分:-1)
您可能在翻译帖子的代码时丢失了它 - 但是没有cn.Open()。我也会在Try语句中使用cn.Close(),然后就像一个catch-all将结束语留在finally语句中。您还可以在catch语句中包含check和cn.close(),以便任何异常也将关闭连接。
其次,在使用它填充dataadapter之前,sqlcommand的using语句结束。修复这些内容并终止现有连接。验证交易中的结账连接。也许请一步一步确保它不会秘密地抛出异常或将异常字符串写入控制台,以防它跳过。