Database synchronization

Posted on 2011-02-23
Last Modified: 2012-05-11

Hello group,

I'm having a situation which need to get some advice from experts who have imported data from an existing database (traditional system ) into a different/new database.

Long story short, there is an old IBM machine which is used and still in use of a company. Now, this company has decided to go online but after I've setup the online system has come up with different idea! meaning that they want the new database (MS SQL Server) be synchronized with their DB2.

Of course, as you have guessed both will be dealing with the same product but the layout, structure and tables are totally different.

What is the best approach base on your experience?

correct me if I'm wrong. I'm thinking of creating some tables the same as those on DB2 end and somehow maybe using trigger or ... feed them into new tables.

Assume there is a customer table on DB2 end (let's say db2_Customer) so I will import it into MS SQL Server 2008 and will extract necessary information from temp table into my customer table.

Currently I'm kind of jumping around since time is another issue but will appreciate it experts could give me some advice.

Question by:akohan
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
LVL 16

Assisted Solution

EvilPostIt earned 100 total points
ID: 34961604
If you want to go down the trigger route then here is how to create a linked server so you can directly insert into the destination.

Although bear in mind that this will slow your system down and make it dependant on the DB2 system.
LVL 37

Assisted Solution

momi_sabag earned 100 total points
ID: 34961648

Keeping two systems on different platforms synchronized is not a simple task. Considering it's two different rdbms makes it even more complex.
You can try to pull it off using triggers, but i think it will get very complicated and hard to maintain
What is the level of sync that is required? can there be a lag of 2 hours for example?
Which system gets updated? only db2 or both? (is it a 2 way sync, 1 way sync etc...)
are you able to identify the new data so that you can only synchronize the differences every time and not all the data?

Author Comment

ID: 34962251

Hello Momi_Sabag,

Thank for your questions I will try to explain the scenario but please ask me questions if I have not covered something:

We have two ends:

1) Online (SQL Server)
2) IBM (DB2)

Online system has all the products info that will be sold online however, DB2 has the same information and also customer information (from 30 years ago!).
The scope of project was that people will register from online end and was assumed that people would then can find product/parts and add them to cart and place an order.

However, now in the last step the person (working with managers who have no technical knowledge) I'm work for has explained that  they must have existing customer information in online (SQL Server) since existing customer can have their special pricing (base on a discount % parameter).

So as you see my input is changing from online registration page to data coming from DB2. Also, I need to find out what is the discount rate for each existing customer that comes from DB2 as well.

The way I see it, it is a one way sync (from DB2 to SQL Server). So when one of those customer places an order I will pass order details and customer information to DB2 using csv file so somebody on their team can suck it up into DB2.

As far as lag,  I guess for now it would be OK 2 hours all they will do they will send an email to customer that order has been placed and ...

Let me know if you have further questions.

How To Reduce Deployment Times With Pre-Baked AMIs

Even if we can't include all the files in the base image, we can sometimes include some of the larger files that we would otherwise have to download, and we can also sometimes remove the most time-consuming steps. This can help a lot with reducing deployment times.

LVL 37

Expert Comment

ID: 34962339
so if it is only pulling data from db2 to sql server i would use SSIS to perform this movement. by using a job you can schedule the package to run almost continuously

Author Comment

ID: 34962768

But one thing worries me is that you as a customer by placing an order online should be able to see a history of all orders, but this way since all taxing and shipping calculations will happening on IBM end (since it has its own system) then I only can issue and keep qty and price before tax and shipping.

and updating that again will burden the system.

Any idea?

Accepted Solution

rmm2001 earned 300 total points
ID: 34989893
Going off of @momi_sabag - SSIS would be an easy-to-setup tool for this. Drag and drop and you're there.

If you want to allow your client to see their historical transaction history (I assume it's stored in DB2), you have a few options.

- Write a SSIS package that pulls the history for that client into some sort of format that the GUI can read/use (so like txt/csv)
- Write a SSIS package that is called when the client enters the site, which pulls his records over to the SQL Server database. After that session is done, those records are deleted from the table. Which would require 2 packages. (I'm not sure if I'm a fan of this)
- Link the servers. So link your DB2 server to SQL Server and you can query [servername].databasename.schemaname.tablename just like you normally would query a "regular" database. This would allow for either database to be updated and the query to reflect it. And minimize the code changes the programmers may need to make.

See if that works!

Featured Post

[Webinar] How Hackers Steal Your Credentials

Do You Know How Hackers Steal Your Credentials? Join us and Skyport Systems to learn how hackers steal your credentials and why Active Directory must be secure to stop them. Thursday, July 13, 2017 10:00 A.M. PDT

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

In this article we will get to know that how can we recover deleted data if it happens accidently. We really can recover deleted rows if we know the time when data is deleted by using the transaction log.
Introduction This article is intended for those who are new to PHP error handling (  It addresses one of the most common problems that plague beginning PHP develop…
If you’ve ever visited a web page and noticed a cool font that you really liked the look of, but couldn’t figure out which font it was so that you could use it for your own work, then this video is for you! In this Micro Tutorial, you'll learn yo…
Add bar graphs to Access queries using Unicode block characters. Graphs appear on every record in the color you want. Give life to numbers. Hopes this gives you ideas on visualizing your data in new ways ~ Create a calculated field in a query: …

635 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question