I have 2 tables with same schema on 2 different databases on the same server with SQL Server 2008 R2. One table gets updated with data more often.
Now there is a need to keep these 2 table in sync. This can happen as a nightly process. What is the best methodology to achieve the sync. process ?
Using MERGE is your best bet. You can control each of the conditions. WHEN MATCHED THEN, WHEN UNMATCHED THEN etc.
MERGE - Technet
MERGE- MSDN (GOOD!)
Example A: Transactional usage - Table Variables - NO
Example B: Transactional usage - Physical Tables
Example C: Transactional usage - Tempdb (local & global)
You can select from the different databases and use a cursor to loop the selected data. Within that cursor you can do some logic and update or delete from the target table.
Also SQL 2008 has a nice new MERGE statement which you can use to select/insert/update in one T-SQL query. http://technet.microsoft.com/en-us/library/bb510625%28v=sql.105%29.aspx
For more complex processes i use the first option. For more straight forward sync tasks i use the second option.
As an extra option there is also Server Integration Services (SSIS): http://blogs.msdn.com/b/jorgepc/archive/2010/12/07/synchronize-two-tables-using-sql-server-integration-services-ssis-part-i-of-ii.aspx
You probably can use sql server's tablediff.exe command line utility. It can do table-by-table, one-off compare between two tables and generate the sql automatically for you to sync the dest to the source.
There's also a GUI wrapper around it http://code.google.com/p/sqltablediff/ which makes the job even easier. It will generate the command line for you.
You can then create a scheduled task to run the command line, and then execute the generated sql scripts.