Might be outgrowing Access but daunted by SQL Server

J

Jon22

I'm close to completing the consolidation of various small Access databases
and a couple of Excel spreadsheets that my little company uses (5 staff) into
an all encompasing Access database and I was planning on splitting the
database when I was finished to allow simaltaneous use of it by staff on our
small office network. However it is becoming more and more obvious to me that
I am going to need to give staff access to this new database from remote
locations (outside of our office network). Two staff members are regularly
overseas, one is mainly on the road with her laptop etc etc. I've been
playing around with trying to link tables from remote locations (ftp path of
the database on our Network Storage Device at the office) and needless to say
- that don't work. So I've spent the last 10 hours downloading, installing
and trying to get my head around Microsoft SQL Server 2008 Express and how it
might help me out. It all started when I came across a very encouraging
article on keeping your Access database as your front end application and
linking to SQL Server database tables. I'm finding it MUCH more complicated
than I had hoped.

Can anyone suggest a simpler way of achieving remote access to my database?
I have at my disposal a Network Storage Device which has remote access
capabilities (this is where the database is currently stored), our website
which it could be stored on, or I'd be happy to use my quite powerful
workstation at the office as some kind of server. You may have guessed by now
that I'm no IT guru by any stretch so please bare this in mind with any
suggestions.
 
S

Stefan Hoffmann

hi Jon,

It all started when I came across a very encouraging
article on keeping your Access database as your front end application and
linking to SQL Server database tables. I'm finding it MUCH more complicated
than I had hoped.
The first step is almost quite easy. Either use the Access built-in
upsizing wizard or use SSMA

http://www.microsoft.com/downloads/...C2-C89C-4641-BEBB-6D04476EC1BA&displaylang=en

To push your back-end to the SQL Server. You need to test your
application as some things my be broken during migration as some
DAO/Access/Jet specific things do not longer work.

After that you can dive into SQL Server Replication which is quite easy
to master, but you need some time to get into it.
Can anyone suggest a simpler way of achieving remote access to my database?
The easiest way is to use a Terminal Server (-2008) or Remote Desktop
Services (2008r2).

Here you simple give your users another "virtual" desktop which can be
easily access over the net. Your application still runs local to your
domain network.


mfG
--> stefan <--
 
A

Albert D. Kallal

I outline some ideas here:

http://www.members.shaw.ca/albertkallal/Wan/Wans.html

if you don't want to change anything in regards to your application and
don't know anything, then you could have your IT department setup remote
desktop. They do the network + infrastructure, and once done, you continue
to do everything as you have now (well, you should split your database).
 
J

Jon22

Wow, what a brilliant article! That was exactly what I needed to read right
now, thank you Albert. Sounds like SharePoint is the way to go. I will be
looking into that next.

If I chose to run SharePoint from our office rather than use Office Live, do
you think it'll be easier than trying to set up a Microsoft SQL Server
database with Microsoft SQL Server 2008 Express for someone like me with no
knowledge of such things? (By the way... I am the companies IT department -
heaven help us)
 
J

Jon22

Thanks Stefan. I installed SQL Server 2008 Express on my laptop at home last
night just to have a fiddle with it and try to get familiar with it but as I
said, it confused me no end. After I had installed it I tried to run the
Upsizing Wizard on a dummie copy of our database but after selecting "New
Database" on the first step, I got stuck at "What SQL Server would you like
to use for this database?" on the next step.

I'm struggling with the fundamentals of SQL Server databases. Is it a single
file like an .mdb file? Where does it get reside? Is it creating an SQL
Server on the machine which is a different thing to an SQL server database?
Which machine/s should I be installing the program on? We don't have a
'Server' persay just a number of desktop machines and a network storage
device so are we under equipped? What IS a server anyway? Can one of our more
powerful desktop workstations act as our 'server'?

I need to be able to run all this myself as we are too small to have regular
outside IT costs, but large enough to require a WAN Access Database solution.
I might be wrong but I think it'd also be better to have the data (tables)
stored locally (office network) but accessable remotely as most of the usage
is at the office and I'd prefer not to sacrifice too much speed for the
ability to use the database remotely. Can I have my cake and eat it too using
SQL Server? Would the SharePoint option make using the database slower at the
office?

Also the database relies heavily on unique key values in the tables such as
Quote Numbers, Purchase Order numbers, Job Numbers, Invoice Numbers etc. Many
of which are automatically generated in the forms via complex functions in
the control's default values which in turn rely on up-to-date and constantly
refreshed info from the tables so as to avoid duplicating these values. Is
SQL Server the solution for this? Is there such a thing as a back end
database that updates instantly with every single change or addition made to
it that is instantly reflected in multiple user's front end db all over the
world?

I had a bit of a trial run a few months back at splitting this database and
playing around with the sharing options and could not for the life of me get
the thing to avoid duplicating key fields when opened simaltaneously. This
worries me greatly as the whole thing relies on the integrity of these fields.
 
B

Banana

Jon22 said:
I'm struggling with the fundamentals of SQL Server databases. Is it a single
file like an .mdb file? Where does it get reside? Is it creating an SQL
Server on the machine which is a different thing to an SQL server database?
Which machine/s should I be installing the program on? We don't have a
'Server' persay just a number of desktop machines and a network storage
device so are we under equipped? What IS a server anyway? Can one of our more
powerful desktop workstations act as our 'server'?

Good questions!

Let's go back to Access just for a moment. When you create an Access
database, you are directly managing a file, .mdb file. You manipulate it
via Access UI, adding data (and objects, too) to it and perhaps even
update or delete it as well. In this context, this is no different from
what you've been doing with your Word document and Excel spreadsheet.
You're working with a file.

Now if we go to the SQL Server, you are no longer working with a file,
per se. Rather, you "connect" to a server and thus communicate with a
daemon (e.g. the program that resides in memory persistently and listens
& reacts to requests from other programs). When you request a piece of
data, it's the daemon that opens the data file, read the piece and send
it back to you. Now, you examine this piece and decide you want to
update. You then give the daemon the request to update, but it's the
daemon that actually does updating into the data file. In all cases, you
never ever touch the file directly. You work through the daemon and the
daemon does all file handling.

So, for most RDBMS out there, we interact with the daemons while in
world of JET/ACE, or SQLite or SQL Server Compact Edition, there are no
daemons and we manage the files directly. Once you understand that
concept, it should help become clear why you connect to a "server"
rather than open a file. You never ever touch those file directly,
contrary to what you did in Access.

The server can be anything, a dusty old 386 PC to whatever's the latest
"big iron" supercomputer- it has nothing to do with hardware in
question, though it is common to market "server hardware", but in fact,
"server" refers to the role in the communication. As explained above,
you need to have a place for the daemon to resides. The daemon very well
couldn't exist in a void, can it? So whenever SQL Server happens to be
installed, that is where the daemon is and thus that host is the
"server" while other machines that requests data from this server are
clients. In fact, Access is capable of being a client because you can
create a linked table or use ADO connection to fetch data from a server.

Now, generally speaking, it is usually expected that the server would
run on more powerful hardware because obviously there is more demands
placed on the server (and hence the market for "server hardware"). But
it doesn't mean that you have to go out and buy yourself a server farm
just to run SQL Server. As long the hardware where you install SQL
Server are adequate for your actual demands, it's fine. So if it was
lightly used, I bet that even a old computer could run SQL Server just
fine. Of course, it would be wise to plan ahead for new hardware should
you predict the use to grow beyond the current hardware's capacity.

Now, I didn't answer your question about files... That was deliberate as
I wanted to emphasize that with SQL Server (and any other server-based
RDBMS) you don't really deal with files. You deal with the daemon and
the daemon manages the files. But yes, there are files, and in SQL
Server, it's .mdf and .ldf which may be stored in a certain folder,
depending on how you installed SQL Server. But the only time you
actually worry about the file is when you are dealing with backup &
restore tasks and even then that is not strictly necessary.
After I had installed it I tried to run the
Upsizing Wizard on a dummie copy of our database but after selecting "New
Database" on the first step, I got stuck at "What SQL Server would you like
to use for this database?" on the next step.

Hopefully the above explanation should make clear that because you
interact with daemons, not files, you need to tell the client to how to
find the daemon... hence the prompt "What SQL Server would you like to
use for this database"... It's possible that you may have two SQL Server
running in your organization... which one do you want to use? Normally,
you input in the host address. For your first time fiddling, you would
put in "localhost" because I'm assuming you've installed SQL Server on
the same computer where you wanted to upsize the Access database so by
telling "localhost", it'll contact the daemon residing on your computer.

BTW, I've never used Upsized Wizard since that one time when the results
was less than satisfactory... I've heard results that SQL Server
Migration Assistant provides much better experience. You may want to
give this a go.

I hope this helps.
 
A

Albert D. Kallal

Jon22 said:
Wow, what a brilliant article! That was exactly what I needed to read
right
now, thank you Albert. Sounds like SharePoint is the way to go. I will be
looking into that next.

I don't want to be misleading, and I don't think SharePoint is really the
way to go in many instances, is just one of the many possibilities that now
Access offers.

I think this is what so great about Access, is that we have so many great
possibilities. I think prior to the Access 2010 offering, I don't recommend
SharePoint in a lot of situations. In other words you have some limitations
in terms of application design that are quite notable prior to Access 2010.
In fact even with Access 2010, there are limitations that if not taking into
account, you'd still be better off to use SQL server.
If I chose to run SharePoint from our office rather than use Office Live,
do
you think it'll be easier than trying to set up a Microsoft SQL Server
database with Microsoft SQL Server 2008 Express for someone like me with
no
knowledge of such things? (By the way... I am the companies IT
department -
heaven help us)

There's no question that SharePoint 2010 + Access 2010 is far easier then
getting up to speed with than that of SQL server. The reason for this is
that you get to stay 100% inside of the Access environment, and don't have
to use (or learn) some type of server or SQL server setup stuff. In fact I
think this is why SharePoint is such a winner, you have so many the so
called users that don't wanna spend the time to learn some server based
technology, and SharePoint is the ticket in this regards.

On the other hand, SQL server is not really that hard. If you think about
this, sql server is really just the table design part much like Access. If
you know how to use the relationships and table design in Access, then SQL
server should go pretty fast for you to learn. Your application design for
the most part continues inside ms access. I would say learning to build
tables and use SQL server has a considerably shorter and less learning curve
than that of say sitting down and learning to do things with ms access. In
other words ms access as a considerably steeper learning curve then learning
to do the basic things you need in SQL server.

As mentioned, if you're not running SharePoint 2010, and it can be pretty
much assured that you're not as of yet since the product is not shipping and
not available, then right now your decisions comes down to that of SQL
server, or that of terminal services (or what is often referred to as remote
desktop). SharePoint 2007 with access 2007 is a possibility, but I can't
say it's anything close to what we're having or going to have in Access 2010
(and stating this without regards to the new ability in Access 2010 in which
you can actually build 100% web based applications).

Keep in mind, one of the other really big advantages of SQL server is the
low cost. If you can get your system up and running with SQL server using
one of several free editions, then you not have to purchase anything else or
likely even have to set up much if any more infrastructure then what you
have now except for some type of secure connection.

If you have an IT department at your disposal, then I often suggest windows
terminal services. This means once the infrastructure is setup, then you can
deploy and use your application as it is without any modifications, nor ANY
training or learning on your part is required for this deployment option.
So, the remote desktop option is a great solution because you don't have to
learn anything new - however this is likely you're more expensive option
from an infrastructure and IT point of view.


Albert D. Kallal (Access MVP)
Edmonton, Alberta Canada
(e-mail address removed)
 
J

Jon22

Thanks Banana! Definately cleared away some of the fog. I just finished
writing a big long reply message asking about remote linking only to lose it
just as I was posting it, so I'm going to rewrite it as briefly as I can:

I'm having trouble finding info on linking to tables on a SQL Server
database from a computer outside the LAN.

Let me know if I'm off the mark here, but I think the best approach for me
is going to be: Copy the tables from my Access database to a SQL Server
database then split the Access database, delete the linked tables from the FE
database and then relink to the tables residing on the SQL database (which
should have exactly the same table names and field names and datatype as the
ones that were put into the now obselete back end Access database so that the
front end database should still function as it does now)

I think that I'll be able to link to the SQL database tables easily enough
from my copy of the front end Access database because this FE .mdb file will
be sitting on the same computer if I install SQL Server on my computer.

What about other clients on our office network? Or even more scary, our
computers in our overseas office? How do they find the SQL database to link
to? Do I need to save the SQL database (effectively our back end database) on
to our network storage device which has a static IP address assigned to it
and ftp & https access or our website or something? Or does my computer
(effectively the server once I install SQL Server onto it) suddenly gain
remote access capabilities even sitting behind our LAN router/moden firewall?

From what I can gather, when I link to the SQL database tables I'll need to
create new ODBC files which, from my understanding, in the simplest terms
gives the FE Access database the filepath of the BE database objects to link
to? Will this have to be done for each client computer? Or can I create one
database with the linked tables all done and then send this .mdb file to all
the staff to load onto their hard drives? In other words, are ODBC files only
useful to the computer they were created on?

More importantly I guess, am I way off here or perhaps still missing any
vital fundamental steps in my perception of how this is going to all work?
 
D

david

Jon22 said:
Thanks Stefan. I installed SQL Server 2008 Express on my laptop
at home last night just to have a fiddle with it and try to get familiar
with it but as I

Dunno, haven't tried that one. I guess that includes Visual Studio
Express? Otherwise you will be stuck using SQLCMD to do even
the most basic tasks.

Another option would be to download the full version of SQL Server
to experiment on. Last I looked, the full version is FREE for you, a
DEVELOPER, to do DEVELOPMENT on. You just use Express
when your company starts using it for real data.

The advantage of the full version is that it comes with the complete
client tools and documentation, including SQL Server Enterprise
Manager, which is (was?) the primary administration tool for SQL
Server. Dunno how Visual Studio/SQL Server Express compares
with that now.
said, it confused me no end. After I had installed it I tried to run the
Upsizing Wizard on a dummie copy of our database but after selecting
"New Database" on the first step, I got stuck at "What SQL Server
would you like to use for this database?" on the next step.

I'm struggling with the fundamentals of SQL Server databases. Is it a
single file like an .mdb file?

Yes, it is a couple of files, like Access requires MDB, LDB and MDW
files, and yes the data is in just one MDF file, like Access data is in just
one MDB file.
Where does it get reside?

Like Access, they reside where you put them. If you want to share them,
you put them somewhere where they can be shared. Then you set up the
shares so the user can use them.

For Access, creating new databases is done from Access, and setting
up network database shares in done from Windows Explorer: For SQL
Server, it is done from Enterprise Manger, or Visual Studio, or using
OSQL or SQLCMD
Is it creating an SQL Server on the machine which is a different thing
to an SQL server database?

Creating a SQL Server on a machine means installing and starting
the SQL Server service. For Access, the "SERVER" service is
required (plus some other things). For SQL Server, a "SQL SERVER"
service is required (plus some other things). The only difference is
that the "SERVER" service is included and started by default on
Windows: the "SQL SERVER" service you had to download and
install.
Which machine/s should I be installing the program on? We don't
have a 'Server' persay just a number of desktop machines and a
network storage device so are we under equipped?

Wherever you want it.
What IS a server anyway?

The main differences between a typical server and a typical
workstation are (1) a server is optimised for more people using it,
and (2) a server permits more people to connect to it.
Can one of our more powerful desktop workstations act as our 'server'?

SQL Server Express is optimisied for a small PC with a small
number of connections, so it fits just fine on a workstation or
on a heavily used server. And if you use a full version for development,
you will be the only person using it, so it also fits just fine anywhere.
I need to be able to run all this myself as we are too small to have
regular
outside IT costs, but large enough to require a WAN Access Database
solution. I might be wrong but I think it'd also be better to have the
data
(tables) stored locally (office network) but accessable remotely as most
of the usage is at the office and I'd prefer not to sacrifice too much
speed
for the ability to use the database remotely. Can I have my cake and eat
it too using SQL Server?

You can never have your cake and eat it too. If you want it to
work well over the network, you have to keep learning and
keep working. It's not magic.
Would the SharePoint option make using the database slower at the
office?

Haven't tried the new SharePoint. You don't want the old SharePoint.
Also the database relies heavily on unique key values in the tables
such as Quote Numbers, Purchase Order numbers, Job Numbers,
Invoice Numbers etc. Many of which are automatically generated
in the forms via complex functions in
the control's default values which in turn rely on up-to-date and
constantly
refreshed info from the tables so as to avoid duplicating these values. Is
SQL Server the solution for this? Is there such a thing as a back end
database that updates instantly with every single change or addition made
to
it that is instantly reflected in multiple user's front end db all over
the
world?


SQL Server is not a real-time communications network. It's just a
database.

I had a bit of a trial run a few months back at splitting this database
and
playing around with the sharing options and could not for the life of me
get
the thing to avoid duplicating key fields when opened simaltaneously. This
worries me greatly as the whole thing relies on the integrity of these
fields.

You will have to completely re-write that stuff in TSQL.

It's not a lot more difficult, but it is different.

(david)
 
J

Jon22

Thanks again Albert, I think I am going to persevere with trying to get my
head around SQL server. That way we can be fully independent and growth
ready. I might add that whatever solution I come up with needs to take into
account that I am our IT department and for budget reasons I do not yet want
to have to start relying on outside help (apart from this sort of help of
course). I'm a pretty fast learner so we'll see how we go.
 
B

Banana

david said:
Dunno, haven't tried that one. I guess that includes Visual Studio
Express? Otherwise you will be stuck using SQLCMD to do even
the most basic tasks.

Visual Studio does include SSE, but SSE is also a standalone download.
Another option would be to download the full version of SQL Server
to experiment on. Last I looked, the full version is FREE for you, a
DEVELOPER, to do DEVELOPMENT on. You just use Express
when your company starts using it for real data.

I believe it actually costs $50 to have the developer version. Besides
it's not strictly necessary because the SQL Server Management Studio
(SSMS) is already available. In all versions it's bundled but I believe
for Express, you have to separately download the SSMS but it's free as
well.
The advantage of the full version is that it comes with the complete
client tools and documentation, including SQL Server Enterprise
Manager, which is (was?) the primary administration tool for SQL
Server. Dunno how Visual Studio/SQL Server Express compares
with that now.

It should be noted that the complete documentation is online at MSDN. If
Yes, it is a couple of files, like Access requires MDB, LDB and MDW
files, and yes the data is in just one MDF file, like Access data is in just
one MDB file.

While this is technically accurate, this is conceptually misleading
because in client's interaction with server, the question of "where is
the .mdf?" will never be asked by the client. In fact, a properly set up
server would _deny_ access to the users to those files. Only the daemon
(aka SQLSERVER service) or the administrator would have access to those
files.

Thus, it's important to understand that you do not "browse and open a
file" as you would with other applications such as documents or
spreadsheet, but rather "connect to" a server using one of many
protocols... TCP/IP, Named Pipes, Named Memory, and then some more. Thus
the question of "where is the file" is totally nonissue because that's
the daemon's job to manage it and you communicate with the daemon.
Like Access, they reside where you put them. If you want to share them,
you put them somewhere where they can be shared. Then you set up the
shares so the user can use them.

No. As I explained, daemon does all file handling here. Therefore a
proper setup will _deny_ the users access to the files. All
communication should go through the daemon. So you never put .mdf and
..ldf files in a share folder but rather merely open the port 1433 for
TCP/IP or use Named Pipes or whatever for the clients to connect to.
This is why if you look at various ODBC connection strings, the only
time you do see a filepath is when you're working with a serverless
source (e.g. a .mdb will have its filepath in the ODBC connection, but
you'll never see that for a Oracle, MySQL, DB/2, SQL Server!)

connectionstrings.com

To be crystal clear: The users do not need and should not have access to
the .mdf and .ldf files!!
For Access, creating new databases is done from Access, and setting
up network database shares in done from Windows Explorer: For SQL
Server, it is done from Enterprise Manger, or Visual Studio, or using
OSQL or SQLCMD


Creating a SQL Server on a machine means installing and starting
the SQL Server service. For Access, the "SERVER" service is
required (plus some other things). For SQL Server, a "SQL SERVER"
service is required (plus some other things). The only difference is
that the "SERVER" service is included and started by default on
Windows: the "SQL SERVER" service you had to download and
install.

I do believe that "Server" service is not actually germane to the
discussion here. If you read its description, it says it enables file,
print and named piped sharing over the internet. That what it does. SQL
Server services, OTOH, enables clients to connect to this machine and
issue requests for data.

In fact, if I turn off "Server" service, I still can connect to SQL
Server on my SSMS, and reach a Sharepoint site remotely... IOW, "SQL
Server" service and "Sharepoint" service are not dependent on the
"Server" service. There is of course the notable exception that if I
wanted to use Named Pipes, then yes, I do need "Server" service. But
with TCP/IP, then no. They have nothing to do with each other.

As I explained in my previous reply to Jon22, the term "server" actually
refers to a role, rather than some kind of program. A server usually has
a daemon (aka Windows service) that listens on a specific protocol (e.g.
a port on TCP/IP, a region of address for Named Pipes/Memory, etc.) and
react to the requests through there. It goes back to why it's important
to not be so concerned with the questions such as "where is the file?"
because those are wrong questions to ask.
You will have to completely re-write that stuff in TSQL.

It's not a lot more difficult, but it is different.

I would question that. A well-written Access application usually will
run on any backend, be it Oracle, MySQL, DB/2, SQL Server with minimum
change (e.g. using linked tables). It all depends on whether one has
written the application specifically for server-client architecture in
mind, of which also benefits even ACE engine.

There are times and places where re-writing a piece of functionality
into T-SQL, stored procedure, views or other SQL Server objects does
make sense, but I really don't believe it requires a wholesale rewrite.
But that is largely a function of how well written the application was
to begin with.
 
D

David W. Fenton

Can anyone suggest a simpler way of achieving remote access to my
database?

Windows Terminal Server is by far the easiest approach.

Also, if you can wait, A2010 + Sharepoint 2010 is going to make it
even easier.

Without a server (web server or terminal server or SQL Server) on
the Internet or an Internet-accessible VPN, though, there's not much
way to do it, regardless of what back end you use.
 
D

David W. Fenton

If you have an IT department at your disposal, then I often
suggest windows terminal services.

It doesn't take much at all of an IT dept. to support WTS. If you
have a Windows server, it's pretty much a matter of setting up a VPN
to get through the firewall, and then adding CALs on the server.
Both of those things are one-time setup issues, and absolutely
trivial for anyone who is getting paid to do IT support.
 
D

David W. Fenton

I think I am going to persevere with trying to get my
head around SQL server.

I think this is a mistake. Writing an Access app to run on SQL
Server across the Internet means you have to really understand how
to design and maintain server-side components (view and stored
procedures) and then you have to carefully design your app to use
those server-side objects, and you may have to jump through certain
hoops (such as using ADO to get editable results from sprocs) that
are not compatible with default Access behaviors/designs.

Also, you'd have to set up a VPN (assuming you're not silly enough
to just expose your SQL Server port directly to the wide-open
Internet). If you've got a server to run SQL Server, you've got a
server that can run Windows Terminal Server. Since you'd have the
VPN anyway, the only step to use WTS would be to acquire the CALs to
allow users to connect to run their Remote Desktop Sessions, and
then the basic setup of the terminal server for your application
(giving each user an individual copy of the front end, automating
updates, etc.).

And WTS requires NO ALTERATIONS to your application, and no learning
curve. Going with SQL Server to support remote access has a very
high learning curve, and would require substantial alteration to
most Access apps designed to run with a Jet/ACE back end (or even
most designed to use SQL Server on a local LAN).

There really is no comparison in regard to the cost and difficulty
level.
 
D

David W. Fenton

After that you can dive into SQL Server Replication which is quite
easy to master, but you need some time to get into it.

The only reason to do this would be to provide disconnected access.
Keep in mind that SQL Server Express limits replication
funcationality (though not to the point that it cannot be used for
merge replication), so you might have to use a more expensive
version of SQL Server.

If you're not supporting disconnected editing for your remote users,
then you wouldn't need to do this at all.

All forms of replication are an order of magnitude more complex than
using a database without it. Conflict resolution has to be
implemented in some form (you can't ignore it without having your
data end up in a de facto corrupted state), and there are certain
schema designs that inherently do not work (for example, a self-join
with a required field is one that has to be handled very, very
carefully).
 
D

David W. Fenton

Banana said:
Now, I didn't answer your question about files... That was
deliberate as I wanted to emphasize that with SQL Server (and any
other server-based RDBMS) you don't really deal with files. You
deal with the daemon and the daemon manages the files.

One of the issues here is that unlike Jet/ACE, you can't just copy
the files to a laptop and use them on the laptop disconnected from
your LAN. You have to have an instance of SQL Server running on the
laptop, so that any PC where you have SQL Server as local data store
is going to be running SQL Server, and this is a potential security
risk. Now, in the case where you're not storing any data on the
disconnected machines and just using the app when connected to the
network (LAN or VPN over Internet), you don't need SQL Server
running locally in order to connect to a SQL Server.

But if you're contemplating allowing disconnected use, you'll need
the SQL Server running on the laptops and you'll probably need to
implement SQL Server replication in order to keep the laptop
databases synchronized with the central one. Replication is not a
minor issue, and if you can avoid it, you really should.
But yes, there are files, and in SQL
Server, it's .mdf and .ldf which may be stored in a certain
folder, depending on how you installed SQL Server. But the only
time you actually worry about the file is when you are dealing
with backup & restore tasks and even then that is not strictly
necessary.

In general, backing up the live SQL Server files is not going to
give you a reliable backup. It's just like backing up an MDB/ACCDB
that is open by a user -- you may or may not get a valid file out of
it (it's probably even less likely with the SQL Server files, I
would think). SQL Server has a backup agent to take care of backups
for you, but one of the disadvantages of SQL Server Express 2008 is
that the backup agent is not included! Some backup software is able
to talk directly to the SQL Server and get a backup file, but if
that is dependent on the agent, it won't work with SQL Server
Express.
 
D

David W. Fenton

I'm having trouble finding info on linking to tables on a SQL
Server database from a computer outside the LAN.

Remember, the SQL Server needs to be installed on a permanent server
(in a small office, it could theoretically be a workstation, but
this is really not advisable, unless nobody ever uses it), and for
it to be accessible to remote users, the port on that server that
SQL Server is listening for connections on has to be available for
the remote users to connect to it.

Think of using a web page: when you make am HTTP request, your
browser connects on port 80 (by default -- you could request
http://dfenton.com:80 to specify it explicitly), which is the
default open port for the worldwide web.

With a SQL Server, you have to have a port for client PCs to connect
to but the big question is where it is available. You could expose
it to the public Internet like you do your web server, but that
would be extremely dangrous. Instead, it is most common that a SQL
Server used for an app like this is made available on the LAN and
remote users connect to the LAN across the Internet over a VPN
(virtual private network). The security for initiating the VPN
connection is usual very high (some VPN client software requires
special key authorization and it's all encrypted so the data inside
the VPN tunnel cannot be examined by someone as it passes through
their servers), and thus it serves as a strong locked door to keep
people out of the LAN.

The alternative, i.e., making the SQL Server port public, is much
more dangerous. Sure, SQL Server has its own authorization (or uses
Windows authorization), but historically, there have been lots of
security holes that allow people to skirt proper authorization and
get into places they shouldn't be.

A VPN is harder to exploit in that way.

So, think of the VPN as a really long network cable that's connected
to the local LAN. You have to "plug it in" in order to see the
remote network (this usually involves initiating a connection
similar to a dialup connection, with username and password
provided), but once the VPN connection is established, you will have
a "local" network that is identical to that you'd see if connected
by wired cable to the LAN in the "home" office (with some caveats: a
sysadmin can configure exactly what a remote user sees and has
access to by managing certain configuration parameters, but the
general practice is to make the VPN view of the LAN as familiar to
the users as possible, i.e., similar to what they can see and
connect to when in the office on the wired LAN).

All that said, I'd still recommend Windows Terminal Server over VPN
instead of upsizing to SQL Server, since to do the former requires
no change to your application whatsoever, while upsizing to SQL
Server is a pretty involved process (particularly if you need to
design it for slow connections from the remote users)
 
D

David W. Fenton

Banana said:
I do believe that "Server" service is not actually germane to the
discussion here.

It can also not be turned off without disabling your PC, even if you
aren't sharing anything at all.

(I tried it with my first copy of NT, as I wasn't sharing any files)
 
A

Albert D. Kallal

David W. Fenton said:
Writing an Access app to run on SQL
Server across the Internet means you have to really understand how
to design and maintain server-side components (view and stored
procedures) and then you have to carefully design your app to use
those server-side objects, and you may have to jump through certain
hoops (such as using ADO to get editable results from sprocs) that
are not compatible with default Access behaviors/designs.

I very much agree with your assessment.

As a general rule due to having good skills with SQL server, then the issue
of learning curve and converting an application to run correctly over a WAN
or internet using SQL server is an easy task for me. (so, then sql becomes a
cheaper setup).

Comparing the learning curve of SQL server to a one time setup of terminal
services as you state, I think the terminal services suggestion on your part
wins hands down.
There really is no comparison in regard to the cost and difficulty
level.

Cost for me using sql server is less. I have many successful applications
running over the Internet using SQL server. However, I done the learning
curve. We don't even used stored procedures. We use some pass-through, and
mostly link to views for joins on reports or pick lists. I can zero in and
get a access application up and running for SQL server in a WAN environment
in VERY little time now. I am also using a hosted option for sql server.
And, sql Azure can be had for $10 a month for a 1 gig database. I believe
the trials are on now, and I can't wait to try Azure.

However, WTS vs SQL server in BOTH cases, a server + VPN must be setup.

WTS really is far less learning overall. And, one does NOT spend money
modifying an already good working access application.

So, the larger and more complex the access application, the the more work
needed for SQL server. This thus again favors he WTS choice.
 
A

a a r o n . k e m p f

dude you can't run Linked Tables outside the LAN.

re: I'm having trouble finding info on linking to tables on a SQL
Server
database from a computer outside the LAN.

These people are just outright lying to you.

It works best to move to Access Data Projects.
Direct SQL Server is _ALWAYS_ more efficient than linked table BS.

That's why 80% of professional developers would never use Access for
any reason--

SQL Server direct is just more fun, faster, and easier.

SQL Server allows you to do things to your data that would make Jet
puke.

Jet just plain sucks.

File, New, Project (new database), browse for MSDE installation (or
SQL Developers Editon)
if you have Access 2007, then you can use SQL 2005 Express instead of
MSDE 2.0

-Aaron
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top