2

I have managed to get SQL Server 2005 Express up and running on my computer Ok in order to do some testing before trying this in the "Real World".

I have a fairly large MS Access 2007 Database application I need to migrate to SQL Server retaining the "Front End" as the user interface. (The app' is already a "split" database with a Front and Back end....)

I have done some initial testing on using SSMA to migrate my Access database To SQL Server Express.

Clearly I don't understand some things and I thought I'd see if anyone has any ideas.

Conceptually I thought that what needed to happen was that the Back End of the database that resides on the server needed to be migrated to SQL server and then the Front End re linked to the (now linked to SQL) tables in the Back End.

When I do this using SSMA I end up with renamed tables in the Back End Access file that look something like "SSMA$myTableNameHere$local". I also get the original table names underneath showing as ODBC linked tables.

So far so good.

BUT.... When I go to re-establish the linked tables from the FRONT END (The user interface) all I can see is the "SSMA$myTableNameHere$local" names NOT the original table names.(Now linked via ODBC) I can link to the "SSMA,,,," tables but it would mean changing the names of every table in every query and on every form and in all code on the Front End! Not something I really want to do.

SO....

I thought I'd try to migrate the FRONT END and see what happens.

What I ended up with is a situation where, basically it works (there are some serious errors and issues that I haven't even looked at yet... like missing data etc.!!!!) and I still get the "SSMA$myTableNameHere$local" tables and the ODBC linked tables with the original names.

I'm trying to understand...... Does this mean that we would do the migration on the Front End and then just copy the same file to each user's computer?

Another subject I'm a little confused about is that I can't link via ODBC to SQL Server Express on the local machine (ie my computer) so I can't test migrating the Back End and then linking to the tables via the Front End as I have in the past in more of a client/server situation.

Jon Seigel
  • 12,251
  • 8
  • 58
  • 92
wisemonkey
  • 21
  • 1
  • 3
  • Wisemonkey, you should probably take the second question and give it its own separate question where it can be answered. – BIBD Mar 10 '09 at 17:55

6 Answers6

2

Assuming that SSMA replaces the tables in your back end with links to the SQL Server, all you need to do is delete the original table links in your front end and import the newly-created table links from the back end. You can then discard the back end, since it's not used for anything at all any longer.

GEOCHET
  • 21,119
  • 15
  • 74
  • 98
David-W-Fenton
  • 22,871
  • 4
  • 45
  • 58
  • Yeah. Now that I can ODBC to the SQL Server it makes sense. I had to remove some characters from the table names after I linked to them from the front end so my app would work but it all seems OK now. Thanks for your help. – wisemonkey Mar 03 '09 at 01:08
1

I did transfer all my tables one by one to SQL Server 2005 fro Access DB back-end using ODBC.Instruction: Open Access DB(back-end) Right-click on table, you need to transfer Scroll down drop-down box and select ODBC Databases Select Data Source dialog box opened, Click "New" button Create new data source dialog box opened Scroll to the bottom and select SQL Server, Click Next Give name to your Data Source, Click Next, Click Finish Create New Data Source Dialog opens Give some discription OR leave empty, Type Name of your SQL Server (you named it, when install SQL Server on your machine) Click Next, Click Next Check "change default database to check box Select DB where you want your data transfer to Click Next, Click Finish NOTE: You need to create new DB (empty) on SQL Server, before doing all this Now: Right-click any table, select Export, select from drop-down list ODBC, from Data Sources window select your Data Source, You created, Click OK Use SQL Server with SQL Management Studio Express. All dates must have a input mask; all text and Memo must have Allow Zero Length =Yes After all disconnect all links from Access back-end, and establish links from SQL.RENAME all newly linked tables to old names. Use Fron-end user interfase, until do some new.

Tamara
  • 11
  • 1
  • It's vastly easier to do this with the tools designed for this purpose. The best one by far is the SQL Server Migration Assistant for Access. I'm pretty sure it can upsize to both SQL Server 2008 and 2005. It allows you to test the upsizing and see what errors out so you can correct your source data before the update. – David-W-Fenton Jul 20 '11 at 23:15
0

Forgive my lack of knowledge of Acronym Soup, but I assume SSMA is the SQL Server 2005 "import data wizard" or the wizard in Access to send the data to SQL Server. It appears that you sent the data to SQL Server from Access - something you don't want to do. You want to use the DTS in SQL Server (now called SSIS or something?) to import the data into SQL Server. Then you'll have your tables in SQL Server. Then, simply create your DSN entry for the SQL Server and re-link your tables. All should be well.

Overall, the general rule is to import Access tables using SQL Server instead of using Access to send the data to SQL Server.

HardCode
  • 6,497
  • 4
  • 31
  • 54
  • SSMA is the "SQL Server Migration Assistant". In this case I used the one designed for Migrating Access Db's to SQL Server. The root of my problem was that I couldn't get an ODBC data source to connect to SQL srver on my local machine. Now that I've fixed that the rest makes sense. Tx 4 your help. – wisemonkey Mar 03 '09 at 01:05
0

I'd bite the bullet and rename the tables on the SQLServer side back to the friendly names that you had in the original database. You'll probably have less problems. Especially if you have any embedded code the MS Access side.

As far as how you will deploy the MS Access side now, it should be pretty much create the ODBC link on the user's workstation, and copy the MS Access file to their desktop (although you might want to make an MDE (or the 2007 equivalent) to prevent them from accidentally breaking it).

BIBD
  • 15,107
  • 25
  • 85
  • 137
0

Frankly, now that you have migrated, you need to look at the design of your tables. It is my experience that the wizards for Access migration do a poor job of selecting the correct datatype. For instance if you had a memo field, you might easily get away with a varchar field instead but the last wizard I used (an earlier version) always converted them to text fields. Now would also be the time consider some fixes such as making date fileds datetime instead of character based if you have had that mistake in the past.

I would never consider using a wizard again to do data migration myself having experienced how very badly they can do it.

You will alos find that just converting the data to SQL Server is often not eough to really get any performance benefit. YOu will need to test all the queries and consider if you can convert them to stored procs instead if they are slow. Eliminating the translation from Jet SQL to T-sql can being performance improvements. Plus there are many features of t-sql that can imporve performance that do not have Access equivalents. Access is not big on performance tuning, but to get the benefit of performance tuning with a SQL Server backend, you need to have SQL Server specific queries written. INdexing needs to be considered if the Access tables were not indexed properly.

HLGEM
  • 94,695
  • 15
  • 113
  • 186
0

Using SSMA is different when you use odbc. If you have an application using fully access (back end and front end). You can manipulate objects easily bounding forms, using DAO, etc.. without problem, then when u need to migrate database to sql server u can use directly odbc (by linking yourself tables to sql server), ssma, ... the main problem how to preserve bounded forms, queries, code in the client-side. If U use directly odbc you must relink by yourself all objects and change code but if u use ssma, you have to do nothing, you will continue to work as u did before. The problem with SSMA is how to deploy the front end to the clients if you developed client side in other place using another sql server?