tags:

views:

210

answers:

8

We are looking to have about 35-40 people writing to an access database via script on a shared drive. The metrics break down to them needed to write about 3-7 times an hour. Would Access support this without going ape on me.

Yes I would love to use this as a SQL server but that means going through massive amounts of red tape/meetings paperwork etc that I would prefer not to bother with

+8  A: 

Could you not make them go with the free edition of SQL Server Express without the red tape?

In answer to your question, though, I've seen Access give big problems in environments with this many users, although that was pre 2007. I dunno how much it has changed.

If it were me, I'd avoid Access at all cost.

Galwegian
+1 - SQL Express beats Access any time and if you get over the red tape you can transition smoothly to standard or enterprise.
Otávio Décio
+1 - yes, absolutely - go with SQL EXpress - you'll save yourself COUNTLESS hours of grief !!
marc_s
I thought Express products were single-user products (in terms of licensing). Have they changed that since a few years ago?
Michael Trausch
@michael - SQL Server Express is not a single-user product. It's restricted to a 4GB database though and has several other limitations.
Galwegian
@galwegian Ahh, okay. Thanks for the clarification, was kinda confused at the suggestion for a bit. :-)
Michael Trausch
+6  A: 

Could it? Yes. If you are very careful and perform locking and ensure that nobody steps on anybody else. Access is really not designed for any form of concurrency. I know of one place that managed to make it work in a very concurrent environment, but that environment basically logged everything and if the DB clobbered itself, it'd restore from the last backup and replay against the Access file automatically, so that the failures were transparent. I would not recommend following that course of action...

Should you do it? No. Is there any reason that you cannot use something like PostgreSQL or MySQL?

Michael Trausch
Why not suggest SQL Server Express then? It's free and integrates better with Access than other DB servers. And you're going to find a lot more help and assistance with SQL Server.
Tony Toews
Oop's. Ignore my commment here. I was thinking in terms of both Acess as the front end and the back end. And I don't know how to delete comments.
Tony Toews
If I'm not mistaken the MySQL .NET connector has a pretty restrictive license and can't be used in commercial applications unless you purchase a license for that. I don't know if there's a Postgre equivalent but still licensing would likely prove problematic. Of course Access is not ideal, but it should be free from such licensing trickery...
emaster70
@emaster70: Postgres itself is BSD licensed as are most of the surrounding tools and libraries. You're free to link against the libraries in your projects or even make a commercial fork (see EnterpriseDB).
EvilRyry
@emaster70 Npgsql, the .NET interface to PostgreSQL, is under BSD license, so it is suitable for use in commercial applications. As I understand it, if you want to use MySQL, you can do so, but you'd have to write your own driver which speaks the MySQL wireline application protocol.
Michael Trausch
+1  A: 

It's iffy. The first time the database crashes you'll wish you went with SQL Server Express. And it will crash, eventually.

In my previous job we had a product with an Access database backend. We had some clients with 25 users. We refused clients who had 40 potential users because we knew from experience that the database would corrupt itself on a regular basis, and performance would be unacceptable.

The day we went to SQL Server Express, the performance of the application doubled, and the problems with crashing and corruption virtually disappeared.

Robert Harvey
+1  A: 

I would avoid access too. Have you every thought about sql ce. It should handle multi users better and it is file just like access.

Mosquito Mike
File DB over shared drive is usualy a bad idea.
François
100% agree. I was just trying to offer a file based db better (however incrementally) than Access DB files.
Mosquito Mike
+1  A: 

7 * 40 = 280 per hour.

280 / 60 = 4,6 per mins.

If your script is light, and if you don't read results too often, maybe... Of course I don't recommand you to try. Meetings time! ;)

François
+2  A: 

Yes, it would work. No, it's not a good idea.

Access would be able to handle the load, as long as those 35-40 people aren't all trying to access the database at once. It'll quickly bog down when you start having more than a couple of concurrent users, particularly if those users are all trying to update something.

The problem is that isn't not safe. You need to have the entire database file accessible on a network share, where any users will be able to write to it. You'll have multiple instances of Access trying to read and modify the file at the same time, and unless you are very careful with locking, it's quite possible for the database to become damaged or corrupt.

You'll also never be able to add any kind of access control beyond basic file permissions. You might not need it now, but internal databases often end up needing to be exposed to the wider world somehow.

It's not worth it. There are plenty of real RDBMS systems out there, for free, that are designed to handle this kind of thing. Why spend time trying to make Access work in such an environment, when you could just install SQL Server Express and be done with it? It has limitations, but if you're seriously considering Access, you're never going to be anywhere near those. Or use MySQL, PostgreSQL, Firebird...

BlackAura
I don't think you read the question very carefully. The app is not a bound Access app. Indeed, it's not clear that Access is involved in any way at all -- the database seems to be used as a data store only, so it's just Jet that's involved.
David-W-Fenton
+1  A: 

If the connections are opened only as long as needed to run the scripts, and you use transactions and have some retry logic built in when there's a conflict, there really oughtn't be too much of an issue.

If your script takes 1 second to do its update (that's a pretty long time in computer/database terms, of course), and there are 280 updates per hour, if you were lucky enough that no two users simultaneously ran their scripts, you would still have 3,320 seconds when the database was not open.

I don't see an issue, assuming that you know how to properly manage your connections and manage your Jet transactions.

David-W-Fenton
+1  A: 

That volume is not a problem for Access so long as it's on a stable LAN or very high speed WAN. Wireless connections are also a bad idea.

I have several clients which are adding about 200K to 300K transactions per year into the systems. So that's about 1000 per work day. That's using both an Access front end and back end.

That said one of them will be upsizing shortly to SQL Server. I fired the other client when they hired a PHB (Dilbert's pointy haired boss.)

Tony Toews