我们公司有一堆 VB6 应用程序。我们正在尝试调试随机 SQL 超时错误,并使用 SQL Server Profiler 对审核登录事件进行跟踪。我们注意到连接以非池方式进入。我们将 SQLOLEDB 提供程序与 SQL Server 2000 和 2005 一起使用。我搜索了互联网,我遇到的所有内容都说默认情况下 SQLOLEDB 提供程序中的连接是池化的,但我们没有看到这一点。下面是我们用来连接数据库的代码。我们真的需要将这些连接池化,因为我们认为这可能是我们的随机超时错误的问题。任何人都可以阐明为什么连接池不起作用以及任何使它起作用的方法吗?谢谢。
Dim cnn As New ADODB.Connection
cnn.ConnectionString = "Provider=SQLOLEDB;Data Source=xxx;Catalog=xxx;User ID=xxx Password=xxx;"
Call cnn.Open
Dim cmd As New ADODB.Command
Set cmd.ActiveConnection = cnn
cmd.CommandText = "SELECT * FROM [Table]"
Dim rs As New ADODB.RecordSet
Call rs.Open(cmd, , adOpenStatic, adLockOptimistic)
While Not rs.eof
'Do stuff
Call rs.MoveNext
Wend
'Close and Dispose connection here
最佳答案
在每次调用时处理连接可以防止池化
...at least one instance of a Connection object instantiated for each unique user—at all times. Otherwise, the pool will be destroyed when the last Connection object for that string is closed.
http://msdn.microsoft.com/en-us/library/ms810829.aspx
关于VB6 ADO 连接池,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/427966/