Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17


Database synchronization

Posted on 2011-02-23
Medium Priority
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 400 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 400 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.

Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

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 1200 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

What is SQL Server and how does it work?

The purpose of this paper is to provide you background on SQL Server. It’s your self-study guide for learning fundamentals. It includes both the history of SQL and its technical basics. Concepts and definitions will form the solid foundation of your future DBA expertise.

Question has a verified solution.

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

In this blog post, we’ll look at how using thread_statistics can cause high memory usage.
In this article, I’ll talk about multi-threaded slave statistics printed in MySQL error log file.
In this video, Percona Solution Engineer Dimitri Vanoverbeke discusses why you want to use at least three nodes in a database cluster. To discuss how Percona Consulting can help with your design and architecture needs for your database and infras…
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…

671 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