views:

361

answers:

6

We have literally 100's of Access databases floating around the network. Some with light usage and some with quite heavy usage, and some no usage whatsoever. What we would like to do is centralise these databases onto a managed database and retain as much as possible of the reports and forms within them.

The benefits of doing this would be to have some sort of usage tracking, and also the ability to pay more attention to some of the important decentralised data that is stored in these apps.

There is no real constraints on RDBMS (Oracle, MS SQL server) or the stack it would run on (LAMP, ASP.net, Java) and there obviously won't be a silver bullet for this. We would like something that can remove the initial grunt work in an automated fashion.

+5  A: 

We upsize (either using the upsize wizard or by hand) users to SQL server. It's usually pretty straight forward. Replace all the access tables with linked tables to the sql server and keep all the forms/reports/macros in access. The investment in access isn't lost and the users can keep going business as usual. You get reliability of sql server and centralized backups. Keep in mind - we’ve done this for a few large access databases, not hundreds. I'd do a pilot of a few dozen and see how it works out.

UPDATE: I just found this, the sql server migration assitant, it might be worth a look: http://www.microsoft.com/sql/solutions/migration/default.mspx

Update: Yes, some refactoring will be necessary for poorly designed databases. As for how to handle access sprawl? I've run into this at companies with lots of technical users (engineers esp., are the worst for this... and excel sprawl). We did an audit - (after backing up) deleted any databases that hadn't been touched in over a year. "Owners" were assigned based the location &/or data in the database. If the database was in "S:\quality\test_dept" then the quality manager and head test engineer had to take ownership of it or we delete it (again after backing it up).

Booji Boy
"Access Sprawl" - nice phrase.
Mark Nold
+1  A: 

Oracle has a migration workbench to port MS Access systems to Oracle Application Express, which would be worth investigating.

http://apex.oracle.com

David Aldridge
+3  A: 

Upsizing an Access application is no magic bullet. It may be that some things will be faster, but some types of operations will be real dogs. That means that an upsized app has to be tested thoroughly and performance bottlenecks addressed, usually by moving the data retrieval logic server-side (views, stored procedures, passthrough queries).

It's not really an answer to the question, though.

I don't think there is any automated answer to the problem. Indeed, I'd say this is a people problem and not a programming problem at all. Somebody has to survey the network and determine ownership of all the Access databases and then interview the users to find out what's in use and what's not. Then each app should be evaluated as to whether or not it should be folded into an Enterprise-wide data store/app, or whether its original implementation as a small app for a few users was the better approach.

That's not the answer you want to hear, but it's the right answer precisely because it's a people/management problem, not a programming task.

David-W-Fenton
@David... the "no silver bullet" isn't the answer anyone wants to hear :) but i agree it's the right one.
Mark Nold
A: 

So? Dedicate a server to your Access databases.

Now you have the benefit of some sort of usage tracking, and also the ability to pay more attention to some of the important decentralised data that is stored in these apps.

This is what you were going to do anyway, only you wanted to use a different database engine instead of NTFS.

And now you have to force the users onto your server.

Well, you can encourage them by telling them that you aren't going to overwrite their data with old backups anymore, because now you will own the data, and you won't do that anymore.

Also, you can tell them that their applications will run faster now, because you are going to exclude the folder from on-access virus scanning (you don't do that to your other databases, which is why they are full of sql-injection malware, but these databases won't be exposed to the internet), and planning to turn packet signing off (you won't need that on a dedicated server: it's only for people who put their file-share on their domain-server).

Easy upgrade path, improved service to users, greater centralization and control for IT. Everyone's a winner.

A: 

Further to David Fenton's comments

Your administrative rule will be something like this:

If the data that is in the database is just being used by one user, for their own work (alone), then they can keep it in their own network share.

If the data that is in the database is for being used by more than one person (even if it is only two), then that database must go on a central server and go under IT's management (backups, schema changes, interfaces, etc.). This is because, someone experienced needs to coordinate the whole show or we will risk the time/resources of the next guy down the line.

CodeSlave
A: 

_ david_ suggested:

This is what you were going to do anyway, only you wanted to use a different database engine instead of NTFS.

Er, please explain to us how one uses that wonderful NTFS database engine.

--
David W. Fenton
David Fenton Associates

David-W-Fenton