Note that there are some explanatory texts on larger screens.

plurals
  1. POMS Access 2003 + linked tables to SQL Server 2005 + Windows Authentication = slow
    primarykey
    data
    text
    <p>Our MS Access application with linked tables to SQL Server 2005 is slow when using Windows Authentication from Windows XP clients.</p> <p>We've been running it successfully using SQL Server authentication, but now we want to move to Windows Authentication for better security control.</p> <p>Setup: </p> <ul> <li>Database server: Windows 2003 Server, SQL Server 2005 SP2 </li> <li>Client: Windows XP SP3, SQL Server ODBC driver v2000.85.1132.00 </li> <li>MS Access application: MS Access 2003</li> <li>Connection string:<br> <code>DRIVER=SQL Server;SERVER=[server name];Connect Timeout=300;Trusted Connection=True;APP=Microsoft Office 2003;WSID=[server name];DATABASE=[db name]</code></li> <li>Only the TCP/IP network protocol is enabled on the server.</li> </ul> <p>The slowness does <em>not</em> happen in these situations:</p> <ul> <li>App on DB server, SQL Server Authentication</li> <li>App on DB server, Windows Authentication</li> <li>App on Windows XP client, SQL Server Authentication</li> <li>SQL Server Management Studio on client, Windows Authentication - I did a small test with running 15 queries in SQL MS. This went fast and did not cause any logon/logoff events in the Security event log on the server.</li> </ul> <p>I've analyzed the slowness using SQL Server Profiler and the event log on the server and it seems to come down to this:</p> <ol> <li>The application runs a query</li> <li>A new connection to SQL Server is opened (visible in SQL Server Profiler)</li> <li>The identity of the user is verified (visible in the Security event log on the server, a logon/logoff event happens). This takes several hundreds of milliseconds.</li> <li>The query runs on SQL Server</li> <li>Results are returned to Access</li> </ol> <p>This happens for every query. Some of the forms run +- 10 queries when showing a new record (updating sub forms, loading values for combo's etc). This results in very slow performance.</p> <p>Of course setting up a new connection to SQL Server for every query isn't necessary, and reusing connections might solve the issue. I've been looking around for information on how to make sure Access/ODBC does proper connection pooling. I found these MS KB articles:</p> <p><a href="http://support.microsoft.com/kb/169470" rel="nofollow noreferrer">Frequently Asked Questions About ODBC Connection Pooling</a><br> <a href="http://support.microsoft.com/kb/164221" rel="nofollow noreferrer">How to Enable Connection Pooling in an ODBC Application</a> </p> <p>I've tried calling the SQLSetEnvAttr function from the main form of the Access application, but this didn't improve results.</p> <p>Any help is greatly appreciated.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload