在 Delphi 7 应用程序中启用池需要做什么?我的连接字符串是:
提供程序=SQLOLEDB.1;初始目录=%s;数据源=%s;密码=%s;用户 ID=%s;OLE Db 服务=-1
我可以通过查看 SQLServer:GeneralStatistics UserConnections 性能计数器来判断连接池没有实现——当我的应用程序运行时它会剧烈波动。通过连接池,我希望它能够达到稳定状态。此外,我看到 Logins/sec 和 Logouts/sec 计数器都非常高 - 如果使用连接池,Logouts/sec 将为零或接近零。
在搜索中,我发现了这篇关于资源池的文章:
http://www.ddj.com/database/184416942
它建议“如果您使用 ATL 在 OLEDB SDK(或 COM)级别工作,则必须编写更多代码”(除了将 OLE Db Services=-1 添加到连接字符串)以获得连接池:
CDataSource 数据库;CDBPropSet dbinit(DBPROPSET_DBINIT);
dbinit.AddProperty(DBPROP_AUTH_USERID, "MyName); dbinit.AddProperty(DBPROP_INIT_DATASOURCE, "MyServer); dbinit.AddProperty(DBPROP_INIT_CATALOG, "MyDb); dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4); dbinit.AddProperty(DBPROP_INIT_LCID, (long)1033); dbinit.AddProperty(DBPROP_INIT_OLEDBSERVICES, (long)DBPROPVAL_OS_ENABLEALL); HRESULT hr = db .OpenWithServiceComponents(_T("sqloledb"), &dbinit);
不幸的是,该代码对我来说是希腊语,我不确定如何将其翻译为 Delphi(或者是否有必要)。
我也小心不要更改连接字符串。关于我可能需要做些什么来启用资源池的任何建议?