MS Access: upsizing to SQL Server 2008

Tuesday, March 17, 2009

Microsoft Access I’m currently researching ways to move my main MS Access application from a simple local network client/backend setup to a global, multiple remote sites configuration using SQL Server.

One of the challenges is to upsize the current MS Access 2007 backend database to SQL Server 2008. If you try it from Access itself using the Upsizing Wizard, you may end up getting this error message:

The Upsizing Wizard only works with Microsoft SQL Server (Versions 6.50 SP5 or higher). Please log in to a SQL Server data source.

The Upsizing Wizard only works with Microsoft SQL Server (Versions 6.50 SP5 or higher). Please log in to a SQL Server data source.

After spending some time fiddling around with SQL Server settings I couldn’t understand why I was still getting this error.
Turns out that the upsizing wizard is apparently sensitive to the version of SQL Server you’re using and it doesn’t consider SQL Server v10 (2008) as being later than v6.50…

This issue is in fact a blessing.
Microsoft provides a migration tool for upsizing MS Access database to SQL Server 2008 that’s orders of magnitude better than anything the basic wizard can do: the SQL Migration Assistant for Access, or SSMA.

SSMA lets you take a bunch of Access databases and move the tables and queries you choose to SQL Server, automatically linking them in your original database if you want.
It’s not just a one-off thing either: SSMA keeps track of the objects that where transferred and allows you to synchronise both schema and data as often as you need.

So here you are: do not use the basic MS Access Upsizing Wizard, download and use SSMA instead.

Strange COM Error

While SSMA works perfectly fine on my Windows 2008 x64 laptop, on my main Windows XP desktop it throws an exception when trying to load an Access database:

Unable to cast COM object of type ‘Microsoft.Office.Interop.Access.Dao.DBEngineClass’ to interface type ‘Microsoft.Office.Interop.Access.Dao._DBEngine’
… {00000021-0000-0010-8000-00AA006D2EA4}…

It was a COM error saying that the library for DAO couldn’t be loaded.

I couldn’t find any relevant information on the web.
After a while, I had a look at the DAO driver in
C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll
and I noticed that the filename was in blue: that reminded me that I had set compression on the filesystem.

I disabled compression for the file and, magically, SSMA worked again…

Moral of the story: be careful about compressing your filesystem, some registered libraries and system files may work in unpredictable ways…

References

Updates

  • 17MAR2009: Added section on the strange COM error.
  • 14MAR2009 : Added links to Tony’s Access MVP website.
  • 05JAN2009 : Original publication.
Bookmark and Share

Entry Filed under  :  Database, MSAccess, Programming

5 Comments Add your own

  • 1. Karla  |  February 10th, 2009 at 11:06 am

    Bless you. This saved me alot of time and hair.

  • 2. Renaud  |  February 10th, 2009 at 3:03 pm

    Thanks Karla, you’re welcome.

  • 3. Shane  |  March 14th, 2009 at 5:43 am

    Thanks for the info. I have used SSMA to migrate Access97 tables to sql server2005 and link them. After I have migrated the access97 front end containing forms has become much slower in executing queries. Can you suggest some tips to make it faster..

    Any help is appreciated..

  • 4. Renaud  |  March 14th, 2009 at 11:09 am

    @Shane: it’s one of the drawbacks of migrating to SQL Server: you need to optimise some of your queries as they will be slower.

    The problem is that, if you use Access functions or some Access-only construct in your queries, Access will have to pull all the data from the tables to perform the joins and special treatment.
    Before, it would have known how to optimise for efficiency but once the tables have moved away, it can’t optimise some of the queries any longer.

    I’ve added some links on upsizing.

  • 5. Shane  |  March 24th, 2009 at 3:13 am

    Thanks Renaud. I have some 100 queries that I work with and even if I optimise(don’t really know how to) you say that some of the queries can no longer be optimised. So, can you suggest any other methods to make it faster..

    Thanks again for ur help

Leave a Comment

(Will not be shown)
Notify me of follow-up comments via e-mail

Some HTML allowed:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Trackback this post  |  Subscribe to the comments via RSS Feed


about

This is a simple technical weblog where I dump thoughts and experiences from my computer-related world.
It is mostly focused on software development but I also have wider interests and dabble in architecture, business and system administration.
More About me…

my Twitter

my StackOverflow Profile
My StackOVerflow profile

Most Recent Posts

Categories

Links