A. Twofold :-
- The mentioned products are great for "small" numbers of users and
"small" databases. They carry very little overhead and rely on the
client for record/file locking. This is great for one or a few number of users,
or when data is read-only, but when many users access the system the overhead
of doing locking by file offset with SMB packets is enormous, and the
application will usually grind to a halt/connections will be lost/database will
be corrupted etc.
SQL Server is a true client/server app and so scales far better, but the overhead of doing all the locking etc. at the server end is far higher in some cases.
(Note "small" is a relative term - this could be a hundred users and a 1Gb database - which is large to many people).#
- SQL Server logs all writes to a transaction log before it writes to actual data pages. It also (with 6.5 and below) has to update indices when records in the main table are changed due to page splits etc. This overhead is great for consistency and reliability, but not for raw performance. This logging cannot be turned off.