I did some more testing and found posting an invoice for 1 users took 20 seconds. For another user it took about 3 seconds. The faster user was plugged into a 1GB network port. The slower one was in a 100MB port. We've decided to upgrade everyone to 1GB nics and replace the switch.
However, this should not be necessary! SQL Server 2005 ships with an auditing tool that captures the SQL statements executed in a specific time period. I audited the posting of an invoice. The results are staggering.
-There were over 3000 commands sent to MSSQL during the post
-1150 of the results were the command "execute sp_bindsession null"
-This SELECT statement was executed 374 times:
select top 1 "HOMECUR",...,"RATESRCE" from "CSCRH" with (index(CSCRH_KEY_0) /*,updlock*/) where "HOMECUR"='USD' and "RATETYPE"='SP' option(keep plan)
I'm hoping there are some ACCPAC technical people reading this. Is it really necessary to execute the exact same query 374 times? Surely the post can be written to perform less than 1150 sp_bindsession calls! No wonder you're maxing out our 100MB NIC. It's a good thing I don't have 100 users or I'd have to team 3 NICs on the server just to keep up with the workstations.
This is very disappointing. I understand that sometimes a simple record update can cascade into this situation, but it something is very wrong with this code. I hope ACCPAC plans to resolve this problem in version 6.
Brian