views:

113

answers:

5

Hi,

I was asked to provide an estimation to change a relatively small app designed with MS Access to use a SQL database.

First, is this even possible? I never worked enough with Access, so I'd like to know. If it's possible can you please point me to some websites with tutorials regarding this?

Second: if it's possible, is it recommended? Is it a big performance hit? Any specific do/donts that you can and want to share?

Thanks in advance for your help.

A: 

This tells you how to convert Access to SQL Server:

http://support.microsoft.com/kb/237980

Now, depending on how the application was written (language, etc.), the rest of it may be a quite a bit more work. However, it's really difficult to throw a ballpark on that one because the number of variables in this are large. In any case, it is possible, so that's not an issue.

In terms of performance, if the database is tiny, then Access may actually be faster. If the database is large, you'll gain from SQL server. Aside from that, you can have distributed clients and one data store centrally located, that's a plus.

By the way, if this is written using the .NET framework, it probably just got a lot easier.

John Cavan
The performance differences are not linear with size of the dataset. Performance is controlled by *what* the app does -- if it depends on Jet-specific functionality, or uses data retrieval techniques that are efficient with Jet but inefficient with a server, you'll see a performance hit. One thing that almost never happens with an upsize is an across-the-board performance increase. A few things will be noticeably faster, a few will be noticeably slower, and most everything else will be just about the same (though in general for most mid-sized Access apps, tending to be somewhat slower).
David-W-Fenton
re: .Net -- I thought the question was pretty clear that this was an Access application using a Jet/ACE data store.
David-W-Fenton
@David not to me, I don't use Access and most of the .NET stuff I have done has either been web services or Windows apps that don't use a database. In general though, I found the question to be a little open ended because a 'relatively small' app is a matter of opinion and a poorly coded small app could mean massive effort to change.
John Cavan
@David on the performance note, I didn't say it was linear. For very large data sets, SQL server is going to be a better option. Though, to be fair, I come from the enterprise space and we're dealing with databases that are pushing 100 GB or more (in some case, substantially more), so my perception of what's tiny is possibly different than others.
John Cavan
A: 

This would be fairly easy to do (hopefully). In Access, you can create linked tables that are just links through to tables in other database (like SQL Server), so you could take your existing apps and replace all the Access tables with same-named links to tables in your SQL Server database.

I think doing this could be the opposite of a performance hit, depending on the circumstances. Access is very performant, but only with a small number of concurrent users (say, less than 30). So if the application has a large number of users, you would benefit from switching over to SQL Server. If, however, the SQL Server database is hosted on a different machine, than you lose performance by connecting to a database on a remote server (as opposed to connecting to a local Access database).

I wouldn't recommend doing this, personally.

MusiGenesis
Please don't use the term "virtual" tables. Those are "linked" tables.Where do you get less than five users? I have clients with 25 users working in Access just fine.
Tony Toews
This answer is fine except for the bogus 5 users claim. If @MusiGenesis would edit that out, I'd give it an up vote.
David-W-Fenton
What is the correct number of users? I will put that in. The "5" was based on personal experience with Access, but from many years ago (more than 10).
MusiGenesis
You guys can go ahead and edit my answer with the best number (I just put "5,000,000" in to cover all my bases).
MusiGenesis
+3  A: 

For the specific task of converting a Microsoft Access database to use SQL Server as the back-end data store while keeping the user interface from the Microsoft Access application, Access itself supplies an "Upsizing Wizard" (Tools | Database Utilities | Upsizing Wizard).

This wizard will step you through the process of connecting to an instance of SQL Server, creating an SQL Server database, and moving, to the greatest extent possible, your tables and views (called Queries in Access) to the new database.

The process can be relatively painless, or fraught with difficulty depending on numerous factors including how well you've validated your data in the Access database, whether you've made use of VBA functions in your queries, and whether you've used any query constructs unique to Access.

Larry Lustig
This doesn't work if going to SqlServer 2008, btw, then the SSMT is your only option. It may be that I had to do this because of using the 64-bit Vista, but I believe it is with all of MS Sql Server 2008.
James Black
The SSMA tool is better than the upsizing wizard.
Tony Toews
Access versions have not been well-time in comparison to SQL Server versions, so the built-in upsizing wizard in Access is almost always a version behind.
David-W-Fenton
+3  A: 

SQL Server upsizing is relatively easy to do although thorough testing is required. I'd estimate the effort at 5% to 10% of the initial system development. SQL Server upsizing is recommended in specific circumstances such as greater than 25 to 50 users or 24x7 access or difficulty/impossibility in rekeying data in the event of a corruption.

See my Random Thoughts on SQL Server Upsizing from Microsoft Access Tips page

There is a tool from the SQL Server group SQL Server Migration Assistant for Access (SSMA Access) which is a lot better than the upsizing wizard.

Tony Toews
If I'm not mistaken, the SSMA exists only for SQL Server 2005 and later, no?
David-W-Fenton
Thanks everyone for their answers and comments/inputs on the answers. I got real good information from each answer, and I marked Tony's reply as the answer since it provided links for websites with very comprehensive material regarding the subject. Again, thanks everyone.
silverCORE
A: 

to upsize or not to upsize - that is the question...(or was for us)

kind of a big deal to step up to sqlserver....we kind of dodged it by going to a WAN replication service from AccessTables.com and stayed with Access....at least for the time being.....the upsizing was just one issue...dealing with a web front end or terminal services was part of it too...

NTC