IIS 7 が Web アプリケーションとして使用できるようにセットアップおよび構成された 2 つの異なる C++ ISAPI DLL があります。それらは、異なるドメイン ユーザー アカウントで実行されている異なるアプリケーション プールを使用してセットアップされます。私が抱えている問題は、アプリケーションの 1 つが SQL に接続すると、他のアプリケーションが接続できないことです。アプリケーションが接続を確立しようとする方法にコードの違いはありません。どちらも同じパラメーターで同じ静的ライブラリ メソッドを呼び出します。2 番目のアプリケーションを SQL に接続させる唯一の方法は、そのアプリケーション プール ユーザーを最初のアプリケーションと同じドメイン ユーザーに設定するか、またはその逆に設定することです (1 人のユーザーが不十分な権限を持つことを除外します)。SQL ドライバーの ODBC 接続プールがオンになっていることを再確認しました。ODBC データ ソース アドミニストレータのトレース ログを監視しました。両方のアプリケーション プールが異なるユーザーで実行されているときにトレース ログを監視すると、SQLAllocHandle
トレースの開始と終了の両方で正常に表示されSQLDriverConnect
ますが、それを呼び出す最初のアプリケーションの開始と終了の両方でのみ成功します。2 番目のアプリケーションがSQLDriverConnect
まったく同じパラメーターを使用して呼び出した場合、トレースは入力のみを示し、デバッグ ログも、この関数呼び出しが返されないことを示します。パケット トレースは、2 番目のアプリケーションが SQL サーバーへの接続を試みたことがないことを示しています。ただし、最初のアプリケーションは正常に接続され、SQL でプロファイラーを実行すると、SQL ステートメントの適切な実行が表示されます。これらのアプリケーションは、Windows 2003 x86 上で同じマルチユーザー構成を使用し、IIS 6 および古いバージョンの ODBC ドライバーを使用して問題なく動作しました。
簡単な ODBC 設定を見落としていることを願っていますが、検索結果は空です。事前に感謝します。