0

IIS6 で ISAPI 拡張機能として実行される Delphi 7 アプリケーションがあります。このコードは、ADO を使用して MS SQL 2000 データベースに接続し、データベースに対して多くの読み取りを実行します (書き込みは行いません)。SQL プロファイラーで監査ログイン イベントとログアウト イベントを監視すると、アプリへの多数の要求が 1 つの監査ログイン イベントのみになることがわかります。ただし、IIS の外部から同じコードを実行すると (つまり、dll で同じメソッドを呼び出すテスト アプリ)、多くのログイン イベントとログアウト イベントが表示されます。私の推測では、何もしなくても IIS が自動接続プールを実行していると思われます。パフォーマンス上の理由から、IIS の外部から dll を実行したときに同じ動作を確認したいと考えています。この状況では、アプリはほぼ 100% 遅くなります。dll が IIS の外部で実行されている場合、ADO 接続プールを取得するにはどうすればよいですか?

編集 - 私は実際に SQL ole プロバイダーを使用しています。接続文字列は次のようになります。

プロバイダー=SQLOLEDB.1;初期カタログ=%s;データ ソース=%s;パスワード=%s;ユーザー ID=%s;プール=True;最小プール サイズ=5;最大プール サイズ=50;接続寿命=120

Pooling=True 属性を追加してみましたが、状況は変わりません。また、監査のログイン イベントとログアウト イベントが接続プールのために必ずしも変化しないことを知ったので、ログイン/秒、ログアウト/秒、およびユーザー接続のパフォーマンス カウンター (SQLServer:GeneralStatistics) を使用して、接続プールが発生するかどうかを判断し始めました。IIS の内部から見ると、1 秒あたりのログイン数が多く、1 秒あたりのログアウト数はありません。IIS の外では、1 秒あたりのログインとログアウトが多く、ユーザー接続は変動します (IIS では安定しています)。

4

1 に答える 1

0

与えられた情報に基づいて言うのは難しいですが、接続プールは間違いなく接続文字列に基づいています-接続文字列がまったく同じである場合、接続をプールすることができます...外部アプリケーションが接続を変更している可能性がありますストリング?

IISはADO接続をプールしていません。ただし、ISAPIdllをキャッシュしている可能性があります。外部アプリケーションを継続的に開始/停止していますか?それとも、複数のログインイベントを引き起こす単一の実行ですか?

于 2009-04-10T17:06:28.090 に答える