Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion GroupsFormsForms ProgrammingQueriesModules / DAO / VBAReports / PrintingMacrosDatabase DesignSecurityConversionImporting / LinkingSQL Server / ADPMultiuser / NetworkingReplicationSetup / ConfigurationDeveloper ToolkitsActiveX ControlsNew UsersGeneral 1General 2
Access DirectoryToolsTutorialsUser Groups
Related Topics
SQL ServerOther DB ProductsMS OfficeMore Topics ...

MS Access Forum / Multiuser / Networking / December 2003

Tip: Looking for answers? Try searching our database.

Industrial Strength Access Deployment

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Mike Dwyer - 19 Nov 2003 19:24 GMT
I'm looking to deploy an Access application across a large number of
users and would like input from those of you out there who have had
real-life experience with a deployment of this size.  Here's the
details:

The application is a Microsoft Access 2000 MDE front end connecting to
a SQL Server 2000 backend.  The application has been optimized for
client/server and there are NO JET tables involved here—pure SQL
Server, using ODBC linked tables.

This application is going to be deployed to approximately 700 users,
of which,  approximately 500 users will be using it simultaneously.
To complicate matters further, there are 4 remote offices, each of
which will have roughly 100 users.

Conventional wisdom has been telling me I ought to have my head
examined for proposing such a large scale deployment using Access.
However, I've deployed it with as many as 150 with very good results.
I'm interested in hearing from those of you who have had experience
with deployments of this magnitude.  Is there something inherent to
Access that will prevent me from doing this?  Is it just a matter of
getting a big enough server?  What are the bandwidth issues?  Too many
persistent connections? Etc. etc. etc.

Your input is appreciated.

-Mike
david epsom dot com dot au - 20 Nov 2003 08:55 GMT
> Conventional wisdom has been telling me I ought to have my head
> examined for proposing such a large scale deployment using Access.

MS Access is a large application, and deployment can be tricky. If
you can, make sure that they already have Access installed. If you
can't, make sure that the deployment of Access is the responsibility
of the IT desktop support people - not the database developer.

> a SQL Server 2000 backend.  The application has been optimized for
> client/server and there are NO JET tables involved here-pure SQL
> Server, using ODBC linked tables.

Well, you've tried it with 150 users, but Access Linked Tables are
not really optimised for client/server: Do you mean you have linked
tables, or do you mean only that you are using ODBC with ADO?

Linked Tables in an Access Front End means that you are going through
a Jet Translation layer (still single user, entirely on the workstation)
before you get to the ODBC layer.  The Jet layer is slow, handles stored
procedures inflexibly, and handles transactions badly. The net effect
is that sometimes you have to work a little harder on your FE design.

Having said that, the only thing I would worry about is locking, and
if you've designed a system that doesn't accidentally assert table locks
with 2 users, there is no reason to expect a problem with 600.

> with deployments of this magnitude.  Is there something inherent to
> Access that will prevent me from doing this?  Is it just a matter of

Your Access users are all single users. Their only connection to
the database is via ODBC.  Is there something inherent in ODBC
connections to the Server that will prevent you from having 500
users?  You should ask in a Server group.

(david)

> I'm looking to deploy an Access application across a large number of
> users and would like input from those of you out there who have had
[quoted text clipped - 23 lines]
>
> -Mike
Mike Dwyer - 21 Nov 2003 00:24 GMT
Thanks for the reply, David.

You are correct, it's linked tables (tables show in the database
window as linked).  Without going to an ADP, is there an alternative
to linked tables used on forms and reports?  Can you elaborate on the
"transactions being handled badly" and the  "not optimized for c/s"
comments?

> > a SQL Server 2000 backend.  The application has been optimized for
> > client/server and there are NO JET tables involved here-pure SQL
[quoted text clipped - 23 lines]
>
> (david)
david epsom dot com dot au - 21 Nov 2003 04:10 GMT
You don't have to go to an ADP to use client server techniques:
you can open an ADO snapshot when you open a form, copy the
data from the recordset to the form, close the connection,
alter the data on the form, then open a connection and write
the data back.

Or, you can bind each form to a pass through query, instead
of binding forms to linked tables.  Or, even if you don't have
bound forms, you can use only pass through queries in your
database, instead of using Jet SQL and linked tables.

On the other hand, if you don't use linked tables, perhaps you
might just as well move to an ADP.

By 'not optimized for c/s' I mean just what I wrote before:
the Jet translation layer is slow, handles stored procedures
inflexibly, and handles transactions badly.

When using ODBC linked tables, you cannot nest transactions,
(that is, you cannot do nested commit, nested rollback, or
nested unlock).  You cannot (last I looked) read from a record
inside a transaction after you have written to that record,
and you may get generally more locking than you want.  This
forces you to use a very careful discipline when creating a
complex transaction.

(david)

> Thanks for the reply, David.
>
[quoted text clipped - 31 lines]
> >
> > (david)
Mike Dwyer - 21 Nov 2003 20:51 GMT
If I remember, aren't Pass through queries read-only?

> You don't have to go to an ADP to use client server techniques:
> you can open an ADO snapshot when you open a form, copy the
[quoted text clipped - 59 lines]
> > >
> > > (david)
david epsom dot com dot au - 22 Nov 2003 05:03 GMT
Views were read-only.  They are less likely to be read
only when using ADO.  Pass through queries may sometimes
unexpectedly be read-only, but if I am doing an optimised
client/server connection, I don't use read/write
connections anyway: I read, then write an update query.

The advantage of using pass-through instead of using
the Jet translation layer is that it is faster, and
allows you to talk to stored procedures in a way that
would be difficult through the Jet translation layer.

(david)

> If I remember, aren't Pass through queries read-only?
>
[quoted text clipped - 61 lines]
> > > >
> > > > (david)
Larry  Linson - 22 Nov 2003 05:20 GMT
Mike, I've not worked on anything with quite so large a user audience, but
my experiences with Access-Jet-ODBC-server have been satisfactory with
audiences up to about 200, some connecting over moderately slow links in a
LAN.

The prime contractor on that largest C/S project found it best to obtain and
use a third-party installation program -- the one he chose was Wise. We did
not, however, as some suggest, use the SageKey scripts. A colleague on the
project became very expert with Wise scripting language -- the client had an
enormous corporate license for the version of Access we were using and most
users had moved on to a later version so the install script installed full
Access, the application, and a third-party graphics package on each user's
desktop.

I don't know david epsom's criteria for the Jet layer being slow, but, in
our case, the users and client felt that performance was more than adequate.

We had only a few stored procedures -- the client and prime contractor had
agreed because it was far easier to find and hire competent Access people
than to find and hire competent server DB people (it was more difficult
because the server was Informix and there aren't nearly as many Informix
folk available as SQL Server types) and no transactions. The stored
procedures that we had were simply to get around the problem of using
AutoNumber-equivalents in a server and returned just one number, the "next
unique id" for a particular table -- there was never a problem with them.

In addition, to avoid the occasional "too complex query" that would bring
oodles and gobs of data back for Jet to process, we had a few (and few is
the operative word) Informix Views defined.

The scenario that david describes for using ADO, with disconnected
recordsets, would seem to preclude locking and one "line of defense" at the
DB engine level -- that alone would cause me concern. In fact, we've seen
reports in various newsgroups indicating that in some | many situations
Jet-ODBC-server actually outperforms ADO-server; it was anecdotal evidence,
to be sure, but the hype for ADO was so intense that I was happy to see
someone dealing with reality.

 Larry Linson
 Microsoft Access MVP

> I'm looking to deploy an Access application across a large number of
> users and would like input from those of you out there who have had
[quoted text clipped - 23 lines]
>
> -Mike
david epsom dot com dot au - 23 Nov 2003 22:22 GMT
> I don't know david epsom's criteria for the Jet layer being slow, but,
> our case, the users and client felt that performance was more than

My opinion is that an Access front end is either fast enough, or not
fast enough.

But that is not the same as 'optimized': my web development colleagues
tell me that DAO ODBC direct takes less than a 10th the time of the
Jet translation layer. I've not tested that myself. Since I have all
my users on individual PC's, 'optimisation' has been irrelevant.

(david)

> Mike, I've not worked on anything with quite so large a user audience, but
> my experiences with Access-Jet-ODBC-server have been satisfactory with
[quoted text clipped - 64 lines]
> >
> > -Mike
Larry  Linson - 24 Nov 2003 05:07 GMT
> My opinion is that an Access front end
> is either fast enough, or not fast enough.
[quoted text clipped - 4 lines]
> than a 10th the time of the Jet translation
> layer. I've not tested that myself. . . .

I agree with your criteria, either it is or is not fast enough. I'm sure
there could be speed advantages to ODBC Direct, but I would want a
compelling reason to go to the unbound forms and reinventing functionality
in code that it would require to take advantage of those speed improvements.
That would not be an issue with web development, since you'll have to access
the DB from code, no matter which technique you use. Whether there are
comparable advantages to ADP/ADE and ADO, I couldn't say.

But, if the "easy way" is "fast enough", then worrying about a faster way is
something like the super-hype on "lightweight forms" without a corresponding
code module -- when Michael Groh, Tech Editor of _Access, VB, SQL Advisor_
tested them, he found, yes, indeed they were faster to load... 5 to 15
milliseconds faster... measurable, but not evident to the user sitting at
the keyboard.

BTW, David, thanks for all your good work providing good answers to
questions here in the newsgroups.

 Larry Linson
 Microsoft Access MVP
Mike Dwyer - 25 Nov 2003 07:03 GMT
> > My opinion is that an Access front end
> > is either fast enough, or not fast enough.
[quoted text clipped - 25 lines]
>  Larry Linson
>  Microsoft Access MVP

I agree, Larry.  Unless there's a good reason for doing it, I try to
keep it simple at all cost.  There's a lot of misinformation floating
around that everybody has heard one thing or another. Finding people
with actual experience is invaluable.  People thought I was nuts for
implimenting 150 users with JET, yet it works just fine.  However,
when I put a profiler on the server, I found that certain things I did
triggers a TON of SELECT statements.  Just opening one of my forms
triggered 950 Statements to be triggered!  After modifying my code, I
got it down to 20.
Lance - 25 Nov 2003 13:56 GMT
Sounds like your asking for trouble.  Not only do you need to deploy your application once - but every time you change the front end due to a bug fix or enhancement you'll need to deploy the entire front end to every single user all over again.
david epsom dot com dot au - 25 Nov 2003 21:23 GMT
If by 'entire front end' you mean the single MDB file, I haven't
found that to be any different from when I deployed a C++ or
VB exe:  When I changed the front end due to a bug fix or
enhancement, I needed to deploy the entire front end to every
single user all over again.

(david)

> Sounds like your asking for trouble.  Not only do you need to deploy your application once - but every time you change the front end due to a bug fix
or enhancement you'll need to deploy the entire front end to every single
user all over again.
Larry  Linson - 26 Nov 2003 03:48 GMT
> If by 'entire front end' you mean the
> single MDB file, I haven't found that
[quoted text clipped - 4 lines]
> ploy the entire front end to every
> single user all over again.

In fact, our users "deployed" to themselves... we had version numbers in the
common tables and in the front end itself, and code at startup to check...
if there was a mandatory new version of the FE, we told the user to copy it
from the server to his/her hard drive and then we quit the application; if
an optional new version, we'd tell them and let them decide whether to go on
or not.

But, in times (relatively) long past, I can remember deploying new versions
by shipping huge decks of punch cards or 14" reels of half-inch or one-inch
magnetic tape. Because that was such a slow operation, you wanted to be very
sure you had tested the installation thoroughly. Otherwise, you might fill
the sky with airplanes overnighting the repaired version of your
distribution... not fun to explain to your manager all those overnight
freight bills.

 Larry Linson
 Microsoft Access MVP
Lance - 26 Nov 2003 14:36 GMT
Well, I was not recommending he re-write the application in vb.exe or c++.  A web based solution would seem optimal here.  MDB/MDE front ends tend to be quite large and deploying to 500+ users in remote locations just sounds like a deployment/maintenance nightmare.

Lance
   
    ----- david epsom dot com dot au wrote: -----
   
    If by 'entire front end' you mean the single MDB file, I haven't
    found that to be any different from when I deployed a C++ or
    VB exe:  When I changed the front end due to a bug fix or
    enhancement, I needed to deploy the entire front end to every
    single user all over again.
   
    (david)
   
    "Lance" <anonymous@discussions.microsoft.com> wrote in message
    news:A6483B09-EFFE-4BD1-BB10-27A4044C17BA@microsoft.com...
    > Sounds like your asking for trouble.  Not only do you need to deploy your
    application once - but every time you change the front end due to a bug fix
    or enhancement you'll need to deploy the entire front end to every single
    user all over again.
Mike Dwyer - 28 Nov 2003 05:37 GMT
> Well, I was not recommending he re-write the application in vb.exe or c++.  A web based solution would seem optimal here.  MDB/MDE front ends tend to be quite large and deploying to 500+ users in remote locations just sounds like a deployment/maintenance nightmare.
>
[quoted text clipped - 16 lines]
>      or enhancement you'll need to deploy the entire front end to every single
>      user all over again.

A web solution definitely has its advantages from a deployment
standpoint.  I just hate the web front end "experience" for this
particular application.  This is a very interactive application and
with Access, the interface is very responsive.  Web interface
equivalents are still a bit clunky when it comes to this particular
app.
Larry  Linson - 09 Dec 2003 04:02 GMT
>  I just hate the web front end "experience"
>  for this particular application.  ...  Web
>  interface equivalents are still a bit clunky
>  when it comes to this particular app.

I think you can safely leave off the limitation 'to this particular app'.
<G> It's the difference between a rich client (Access) and thin client (web
browser). That difference is one of the areas that .NET is supposed to
improve; whether and how soon that may happen are yet to be determined.

That said, there are a lot of people opting for thin-client applications
whenever they have a lot of users. I've often thought that there were far
more n-tier distributed enterprise applications than there were
_requirements for n-tier distributed enterprise applications_  just because
of the buzz and hype associated with them.

 Larry Linson
 Microsoft Access MVP
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.