1

Delphi 7 アプリでプーリングを有効にするには、何をする必要がありますか? 私の接続文字列は次のとおりです。

プロバイダー=SQLOLEDB.1;初期カタログ=%s;データ ソース=%s;パスワード=%s;ユーザー ID=%s;OLE データベース サービス=-1

SQLServer:GeneralStatistics UserConnections パフォーマンス カウンターを見ると、接続プールが実行されていないことがわかります。アプリケーションの実行時に激しく変動します。接続プーリングを使用すると、安定した状態になると思います。また、ログイン/秒とログアウト/秒のカウンターが両方とも非常に高いことがわかります。接続プールが使用されている場合、ログアウト/秒はゼロかほぼゼロになります。

検索すると、リソース プールに関する次の記事が見つかりました。

http://www.ddj.com/database/184416942

接続プールを取得するには、「ATL を使用して OLEDB SDK (または COM) レベルで作業している場合は、さらにコードを記述する必要があります」(接続文字列に OLE Db Services=-1 を追加する以外に) ことを示唆しています。

CDataSource db; 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 に変換する方法がわかりません (または必要な場合でも)。

また、接続文字列をまったく変更しないように注意しています。リソース プールを有効にするために他に何をする必要があるかについて何か提案はありますか?

4

2 に答える 2

1

接続の1つのインスタンスを常に開いたままにする必要があります...それがゼロに低下した場合、ADOは接続を再確立してユーザーを認証します。

于 2009-04-10T23:24:46.323 に答える
0

言及していませんが、データ アクセスに Delphi の ADO 実装 (Delphi 7 の場合は dbGo、IIRC) を使用していますか? もしそうなら、同じ TADOConnection を介してすべてを接続していますか? その場合、アプリケーションのプーリングを実行する必要があります (アプリケーションの実行中の 1 つのコピーが DB サーバーへの 1 つの接続を使用していることを意味します)。

于 2009-04-10T20:33:35.407 に答える