SQL (Structured
Query Language) is a recognized standard language designed
to organize, manage, and retrieve data from a database. SQL is
essentially a programming language for relational databases, and
over the past decade SQL Server has consistently delivered an
reliable, scalable, cost-effective data management platform.
Why SQL?
In today’s economy, with corporations looking to control costs while
still driving productivity higher, the cost of acquiring and
maintaining a company’s software investments is in the spotlight.
Information technology (IT) departments are under pressure to
deliver more services, in shorter amounts of time, and with ever
decreasing budgets. For these reasons, IT departments worldwide are
choosing technologies that provide more business value at a lower
cost. One example of a technology that is growing rapidly in IT
departments is SQL Database.
Primary advantages of SQL:
- Portability (between database applications)
- Industry Standard (the de facto standard database query language)
- Dynamic data definition (it can handle alphanumerical queries in an
optimized way)
Advantage of SQL over Access:
1) Reliability
With Access each client reads and writes directly to the raw data
tables. If a client machine crashes while writing data this will
usually cause the back-end database to also crash and become
corrupt. The same thing will occur if the network fails, has a
glitch or temporarily becomes overloaded. This problem becomes more
apparent as the amount of data or the number of users increases.
With SQL Server the clients do not talk directly with the tables
but with an intelligent data manager on the server. This in turn
reads and writes data from and to the tables. If a client machine
crashes, or the network hiccups, this will not affect the underlying
tables; instead the data manager realises that the transaction has
not been completed and does not commit the partially transmitted
data to the database. The database therefore continues to run
without problem.
The client/server system also maintains an automatic 'transaction
log'. If a backup has to be restored the transaction log can be run
and should restore all completed transactions up to the time of the
crash.
The client/server software itself is designed for mission
critical systems and is orders of magnitude more reliable than a
file server system. On one system that we support the client used to
experience around one to two crashes per year (admittedly their
network was not exactly state of the art!) when running with an
Access database. After we converted it to SQL Server two years ago
the system has not experienced a single crash.
2) Data Integrity
Data integrity in SQL Server is enhanced by the use of 'triggers'
which can be applied whenever a record is added, updated or deleted.
This occurs at the table level and cannot thus be forgotten about,
ignored or bypassed by the client machine. For example audit
processes cannot be avoided (accidentally or deliberately) with this
scenario.
3) Better Performance
With Access all tables involved in a form, report or a query are
copied across the network from the server to the client's machine.
The tables are then processed and filtered to generate the required
recordset. For example if looking up details for one particular
order from an orders table containing, say, 50,000 records then the
whole table (all 50,000 records) is dragged over the network and
then 49,999 of these records are thrown away (this is an
over-simplification since indexing can be used to mitigate this to
some extent). Contrast this with SQL Server where the filtering
takes place on the server (if designed properly) and only 1 record
is transmitted over the network.
This can affect performance in two ways. Firstly SQL Server is
highly optimised and can usually perform the required filtering much
more quickly than the client machine and secondly the amount of data
sent across the network link is vastly reduced. For most databases
the main performance bottleneck is data transmission over the
network hence reducing this can give a really dramatic improvement
in performance.
Predicting likely performance improvements is very difficult but
an average overall speed improvement of 3 to 5 times, and possibly
much more, would not be unexpected.
4) Network Traffic/Speed
As can be seen from the previous section, network traffic is greatly
reduced in a client/server scenario, often by many orders of
magnitude. This both improves network reliability (by reducing
collisions, etc.) and also improves the performance of the network
for other software (as there is less traffic on the network). Where
there is a slow connection, such as over a telephone dial-up, Access
is usually so slow as to be all but unusable (obviously this does
depend upon the amount of data) whereas a SQL Server application, if
designed for this environment, can still be perfectly useable.
5) Low Bandwidth
This occurs when you are accessing your database over a connection
that only supports low data speeds, which, for all practical
situations, means anything other than a LAN. In all low bandwidth
situations Access/JET usually performs so slowly as to be unusable
whilst a correctly designed SQL Server system can be similar in
speed to running it over a LAN.
6) Scalability
A file-server system such as Access is designed for small workgroups
and is scalable to perhaps 10 concurrent clients. Above this level
performance starts to degrade rapidly as more users are added. With
the SQL Server client/server architecture many hundreds, or even
thousands (with the appropriate infrastructure), of concurrent users
can be supported without significant performance degradation.
Click here for Access & SQL
Server relations