views:

182

answers:

3

I m using Access 97 database.It has lots of forms. Data bulked. I have to upgrade it quickly. I bought SQL Server 2005 enterprise edition.

I want to use SQL Server for data holder. I m going to use Access forms regularly. I just want to export data to the sql server.

Is it possible to use "Linked" data storing?

A: 

YOu can add the SQL Server tables to access as linked tables. Then you will want to start looking at your slowest queries and convert them to stored procs.

Do not use the upgrade wizard in Access to create the SQl Server tables becasue it will make poor choices for datatypes. Do the work yourself to create the scripts, choosing the best datatypes. It takes longer this way, but your database will perform better and you will gain a better understanding of how to do things in SQL Server. You should start right now, learning to do everything through a script and never from the GUI. Best to learn good habits in SQL Server from the start.

HLGEM
+3  A: 

While I agree with HLGEMs first paragraph I respectfully disagree with HLGEMs second paragraph. There are quirks you need to know about of which I'm somewhat ignorant. Such as changing boolean fields to LittleInt. But otherwise it's a lot of tedious work to recreate the database schema. And it'll be error prone such as missing indexes or relationships.

There is a tool from the SQL Server group which is a lot better than the Upsizing Wizard especially the Access 97 version. SQL Server Migration Assistant for Access (SSMA Access) http://www.microsoft.com/sql/solutions/migration/access/default.mspx

As you discover these quirks you can change the scripts to recreate the database with the appropriate changes.

Tony Toews
you may be right but ssma sucks. Error occured Object reference not set to an instance of an object
Jack
That might be because the database is in Access 97 format. Try converting it up to Access 2000 format. But I'm just guessing.
Tony Toews
+1  A: 

I concur with Tony Toews (and you should trust him on this, he's an Access guru): use SSMA to help you move data to SQL Server, it does a more complete job than the upsizing Wizard integrated in Access (which doesn't work for upsizing to SQL Server 2008 anyway).

You have to be wary of a few caveat though; I've made a blog post about some of the things you should check out.
The point is that if the original Access database was designed without relying too much on the liberties that Access allows (strange characters in table and column names for instance), then the process will be much easier.
Pay special attention to all the warning and errors reported by SSMA, they are really useful in helping you focus on the issues you must solve.

With regards to performance, moving to SQL Server isn't necessarily going to make things faster.
In some areas it will actually be slower, sometimes much much slower:
Access is pretty good at optimizing certain forms of data access but once the database moves outside of its reach, it doesn't have as much control.
Most things will work fine though.

You will probably have to rewrite a few queries, maybe move them as views on SQL Server instead of keeping them in your Access application.
Little things such as using % instead of * as wildchars in queries using LIKE in their WHERE clause can also cause strange issues like queries not returning any records.

By the way, I'll post a very good resource Tony has on his own website regarding SQL upsizing: My random thoughts on SQL Server Upsizing from Microsoft Access.

There is also a good and detailed read about things to consider when using SQL Server from Access: Optimizing Microsoft Office Access Applications Linked to SQL Server

Renaud Bompuis
Thanks for your kind comments. I wasn't sure if my web page is still that relevant as it is a number of years old now. However it appears I'll be doing a substantial upsizing in the nest few months so I'll be sure to keep it updated as I go long.
Tony Toews
Ahh, you're the writer of the Cypris blog. Yup I follow yours. Good articles.
Tony Toews
Thanks Tony :-)
Renaud Bompuis