"jdorp" <do********@insightbb.comwrote
You stated that moving to ADO will not buy
us much.
The dramatic performance improvement will come from redesigning /
reimplementing to make your use of the server efficient, not from the
access method you use.
It was my understanding that when working
with DAO against linked tables Access is
processing much if not all of the data even
though the data now lives in SQL Server.
Unless you are doing something you have not described, Access is processing
nothing at all... you are using DAO, the Jet DB Engine, ODBC, and SQL Server
from your front-end. Access doesn't even have to be installed on either the
user's machine nor the server. It is Jet that handles the data in your
configuration.
Are you saying that moving to ADO calling SQL
Server directly will not improve performance
over linked tables?
I think you will be disappointed in moving to ADO, unless you also redesign
to take advantage of the C/S environment. I suspect it will be simpler and
easier to accomplish the redesign if you are not also facing the learning
curve of ADO at the same time, and you will get the vast majority of the
improvements. I have found DAO, Jet, ODBC, and MS SQL Server to be (perhaps
surprisingly) responsive over a number of years.
Again, I realize that nothing is a substitute for
designing the application from the ground up
for efficient database usage. I do it everyday.
But, again, we are trying to find a way to move
our data from these old Access databases that
have been problematic to a SQL Server environment.
Just changing the access method isn't going to make an inefficient design
more efficient. And, it's no "sin" to have designed properly for one
environment and then have performance glitches when you move that design to
another environment -- it's just the way things work, sometimes.
Yes, the long term goal is to completely redesign
these applications using .NET, ADO.NET, and SQL
Server with performance in mind but I am trying to
find the quickest path that gets us to SQL Server to
buy us time for the real project of re-engineering the
whole mess.
My guess is that learning classic ADO will be just a diversion from your
task at hand -- ADO.NET is built on a different object model, so you won't
get "a leg up" on that task by converting to ADO. If you analyze where you
are experiencing delays and make the design changes to improve that, you'll
be getting the best "bang for your buck." If, even so, you find that
performance is unsatisfactory, you can try using ADO, but I don't think the
difference between using DAO and ADO is going to "wow and amaze" you -- but
the only way to determine, I suppose, is to give it a try.
But, if it were my application, I'd try to improve performance first in DAO,
concentrating on the obvious improvements: don't open recordsets for full
tables, or full tables joined in queries; use a WHERE clause to limit the
records retrieved.
Larry Linson
Microsoft Access MVP