One web site described SQL as Access,
split, with the Linked Table Manager Wizards, so that you have two
databases,
one containing the tables and one containing queries, forms, reports,
macros,
modules and linked tables. I'm perfectly fine with this.
Keep in mind you don't wanna be confused about SQL server vs that of
ms-access.
MS access is not the database system, it is the "jet" engine that is the
datbase.
The reason why that comparison to SQL server is very difficult is because in
SQL server you cannot build a form, you cannot build a report, you cannot
build combo boxes or list boxes etc.
So we're talking about extremely different tools here. One would not
normally
make a comparison between VB6 and SQL server. VB6 is a developer stool that
led to build an application, you might read an application in VB6 that
connects to the jet database engine, or perhaps SQL server express.
You don't develop applications in SQL server, but you most surly do develop
applications in MS access.
So, we're really talking about two completely different things that should
not be compared all. if you're going to make comparisons then you'd be
comparing the "JET" database engine with sql server. in this case there both
data engines that don't allow you to build forms are reports.
So you really can't compare access to SQL server because they are completely
different tools. ms-access is a development tool and system that lets you
build an applicaon + interface to some database engine. That database engine
can be oracle, MySql, sql-server or the built in engine called JET.
The site also
said, with Access-SQL Server, the architecture can be identical, the
tables
are in a SQL Server database and all the other objects are in an Access
application.
Sure, that's sounds good. Over the years i assume you learned to split your
applications? In this case you'll have a front end that was linked tables to
a backend mdb file. You can also take that front end and link the tables to
SQL server now. So there's not a lot of changes that need to occur in your
front end.
Finally, I found out that, in SQL Server a lot of the
processing can take place on the computer (server) running the back end.
This
can be critical across a network. For example, if you run an Access query
that selects one record from a dynaset of 1,000,000 records all of the
records have to come across the network because the Access logic to select
the records is running on the client computer.
The above is it often quoted in scene but 100% incorret. MS access does not
read and load all records across the network if it does not need to.
Ask yourself the following question:
When you load an access database do all the records get read into memory?
(no, they do not).
When you ask access to retrieve one record from the hard disk, do all
reocrds get read from the disk drive? (no). MS access does not know or care
if the drive is "c:\" on your computer or another computer down the hallway.
Access does not "know" or "care" where that disk drive is.
If Access cannot use an index on the requested record retrieved from drive
"c", then access has to read all the records into memory (ram). In this case
the whole table will be loaded even when using drive c: (your local drive).
In that case if you move that back end to a network share, then once again
since it's reading the whole table, then the whole table will come accross
the network.
However in the case when access can use an index, then it does NOT read in
the whole table into memory and access only retrieves the one record.
Changing the location of drive C. to some shared drive in your network does
not change this behavior for access. MS access views that network drive as a
simple disk drive drive and sends commands to read that drive across the
network. The same commands used to retrieve the one record from a local
table are the SAME commands that are sent over the network to retrieve that
one reocrd. The deciding factor here has nothing to do with the network and
has everything to if access can use an index to read the one reocrd into
memory. If access can advoid reading the whole table in memory from drive C,
then it will most certainly do the same thing if you're reading the same
data from a network drive.
So, my question is as follows: just how similar, or how different are the
two? If a person knows the nuts and bolts of Access, is it easy to learn
SQL
Server?
As mentioned they are completely different animals. Everything you learned
and used in access now will not really change. I mean if you plan to use
SQL server perhaps do web development for the front end part of the user
interface, then you're not using access anymore at all. I don't think you're
hinting you're suggesting that you're about to drop MS access here, but I
think you're just considering to use a different database engine then the
built in jet engine.
So everything you've learned access will be there in the same during the
development process if you're going to continue to use access as the
development tools and system here. The only new things to learn is how to
manage and create tables on SQL server as opposed to creating the tables in
access/jet back end.
What are the advantages of learning SQL Server, over Access? Do
you
use Access as a FE and SQL Server as a BE?
Sure, that sounds about right. Rememember that many developers use VB6, or
even VB.net or even ASP to connect to a "jet" mdb file as their back end. So
using "jet" as your database engine was never restricted to just being used
wiht MS access as the front end.
Does .NET or Excel work with
SQL
Server?
Yes.
Does SQL Server integrate well with web browsers?
It's not a question integrating well, however sql server scales a lot better
than using "JET" as a database engine. So once again some web developers
actually do use "JET" for their backend database engine. However there is
little advantage to using JET because you're not really using any the
features of MS access UI or development part.
SQL server is superior to JET in this regards because the connectivity
options for SQL server are not limited to a file connection, but you can use
an IP address (socket connection). Since you don't get to use any of the
user interface part of access when using "JET", then most people just use
SQL server because there are additional scalability issues that make it work
better with web based applications.
I used to use
ASP
to create web queries for an Access DB that I managed. Would it have been
easier to use SQL Server?
You were never really using MS access on that web server, but only placing a
mdb file on that server, and then using connection strings on the web server
to that "jet" database. The advantage of using SQL server means you can use
a lot more tools to modify create and change the table structure right on
the web server without having to transfer files back and forth to your local
computer to modify the JET mdb file for example .
So likely one of the most major vantage's of using SQL server on the web
server side, is you can modified and maintain the tables somewhat easier "in
place" on that server and not have to transfer some file back and forth to
another computer that actually has a graphical user interface called
"ms-access" to modify the "jet" database. In fact the SQL server management
tools actually allow you to connect over the Internet directly to that SQL
server running on your web server. So you don't even have to transfer
anything that all, and you can still use a rich user interface called a
visual studio express tools for sql server that work "over" the itnernet.
MS access never allowed to you to connect to a data base over the Internet,
the SQL server tools do allow this. So, you can use your rich windows
interface and the sql server desktop tools to manage that sql server
remotely. This is likely the number one reason why it's better to choose SQL
server for your web system if we were to ignore the issues of scalability
(sql allows a greater number of users for a web site).
The learning curve to get up and running is not steep at all. However, like
any complicated server system there's a lot to learn about SQL server in
terms of security and all kinds of other features that sql server has.
However for just creating some tables like you do in access, you can be up
and running in a few hours your time.
The reason why SQL server can be difficult to learn is because it has so
many more features to deal with. And, sql server also supports a server-side
codeing lanuage called t-sql.
The additional learning occurs because to get a maximum performance out of
your applications you want to ensure as much processing and work load is
done on the server side because then that prevents data from being sent over
the network to your local computer for proceessing. (in your network
connection tends to be a real bottleneck in most applications).