Windows XPクライアントからのWindows認証を使用すると、SQL Server 2005へのリンクテーブルを持つMicrosoft Accessアプリケーションが遅くなります。MS Access 2003 + SQL Server 2005 + Windowsへのリンクテーブル+ Windows認証が遅い
私たちはSQL Server認証を使用して正常に実行していますが、セキュリティの強化のためにWindows認証に移行したいと考えています。
セットアップ:
- データベースサーバー:Windows 2003のサーバー、SQL Server 2005のSP2
- クライアント:WindowsのXP SP3、SQL ServerのODBCドライバーv2000.85.1132.00
- MS Accessアプリケーション:MSアクセス2003
- 接続文字列:
DRIVER=SQL Server;SERVER=[server name];Connect Timeout=300;Trusted Connection=True;APP=Microsoft Office 2003;WSID=[server name];DATABASE=[db name]
- のみTCP/IPネットワークプロトコルがサーバー上で有効になっています。
遅さがこのような状況で発生しません:
- のApp DB上のサーバー、SQL Server認証
- のApp DB上のサーバー、Windows認証
- アプリケーションのWindows XPクライアント上で、 SQL Server認証
- クライアント上のSQL Server Management Studio、Windows認証 - SQL MSで15個のクエリを実行して小さなテストを行いました。これは速くなり、サーバーのセキュリティイベントログにログオン/ログオフイベントが発生しませんでした。
私は、サーバー上のSQL Serverプロファイラを使用して遅さと、イベントログを解析したのだが、これに降りてくるようだ:
- アプリケーションがクエリ
- への新しい接続を実行します
- ユーザーの身元が確認されます(サーバーのセキュリティイベントログに表示され、ログオン/ログオフイベントが発生します)。これには数百ミリ秒かかります。
- クエリが
- 結果が
これは、すべてのクエリのために起こるにアクセスするために返されるSQL Server上で実行されます。フォームの中には、新しいレコードを表示するとき(サブフォームの更新、コンボの値の読み込みなど)に+ - 10のクエリを実行するものがあります。その結果、パフォーマンスが非常に低下します。
もちろん、クエリごとにSQL Serverへの新しい接続を設定する必要はなく、接続を再利用することで問題を解決できる場合があります。私は、Access/ODBCが適切な接続プーリングを実行するかどうかを調べる方法について調べてきました。私は、AccessアプリケーションのメインフォームからにSQLSetEnvAttr関数を呼び出す試みた
Frequently Asked Questions About ODBC Connection Pooling
How to Enable Connection Pooling in an ODBC Application
が、これは結果を改善しませんでした:私は、これらのMS KB記事を見つけました。
ご協力いただきまして誠にありがとうございます。
また、認証を行っているドメインコントローラの名前を解決するクライアントでDNSの問題がないことを確認することもできます。私は、DNSの問題が、Access/ODBC/SQL Serverの奇妙な問題の原因であり、関連していない可能性があることを発見しました。 –
私はフェントンが正しい道にあると思う。フロントエンドアプリケーションは、SQL Serverインスタンスとは異なるドメイン/フォレストで実行されていますか? – JohnFx
接続文字列を投稿できますか?あなたの地域の価値をobfusticateしてください。 :) –