Of course, "to get the most" out of SQL Server, you may need to
write stored procedures. But, the vast majority of my clients
since 1993 found it easier and less expensive to hire Access
people than to hire SQL Server (or Informix, or Sybase) developers
and did not want us to, would not allow us to, write stored
procedures. Fact is, unless you are dealing with **humungous**
amounts of data, you won't need "to get the most" out of SQL
Server. You are likely to be able to get such improvements with
minor tweaks that you'll never need to even THINK about stored
procedures.
While I wholeheartedly agree with the basic thrust of your message,
and think you overstate the case here. There are a number of
operations, particularly, mass updates and mass inserts (even small
ones) that are much slower when upsized to SQL Server than they
would be with your Jet/ACE back end. This is because with Jet/ACE,
it's done in a single transaction and committed as a batch.
But Jet/ACE tries to be a good citizen as a user of the database and
breaks down your mass update/insert into a series of
updates/inserts, one row for each. This is massively slower, but it
does mean the server can interleave your requests with those of
other users so that the server is not tied up dealing with your
update/insert before it can take care of others' requests.
In that case, you really do have to move some of the logic
server-side.
Now, that said, I've never written any Access apps that do any
significant numbers of such updates/inserts. Mass insert of records
is something that happens in my apps only when they are in the early
stages, or when a major import of data happens. The latter is very
rare in most apps, and even in an app of mine that does need to
import regularly, it still only happens once or twice a year.
Mass updates are, perhaps, more common, but still not all the much
so. I tend to do lots of them massaging and tweaking and cleaning up
data, which is an ongoing process in most apps (e.g., discovering
after an app has been in use that a certain field should have been
restricted to a certain limited number of values, and needs to be
cleaned up so that a stricter editing interface can be put in
place). But as part of everyday workflow, not so much.
I think that any app where large groups of records need to be mass
updated on a regular basis is probably designed improperly -- it
sounds like something that ought to be in a transaction table,
rather than done as a mass update. Naturally, this is a blanket
statement that won't apply in particular situations, but I think it
applies in most.
Therefore, in general, my point here about need to move mass
inserts/updates server-side is something that shouldn't actually
happen very often in most well-designed apps. And because of that,
Larry's point is basically correct.
But it's important to realize that there can be perfectly valid
reasons for needing to do these mass operations, and optimizing them
for SQL Server is probably going to require server-side components.