If you are in anyway involved in database development, you will invariably run into instances where you need to compare two similar databases and find out how they are different (both database objects or data stored in tables). This is especially the case if you don't use change management software and there are two or more developers writing and modifying database design, code, or test data. Along this same line, if you do find differences between two databases' objects, sometimes you have the need to synchronize the two databases so that they are the same.
For example, you might have one or more developers working within the development database, and periodically need to move new or modified objects from the development database to a test database. It is also possible that one or more developers might also be making changes in the test database (objects and data) for debugging purposes (even though this is a bad practice). At some point, it can get very confusing as to which objects or data in which database have been added, deleted, or modified. To determine differences manually would be time-consuming and painful. And even if you eventually figure out which objects or data are correct in each database, it is also painful to manually synchronize the changes in order to synchronize both databases. This is just one example of why you might need to compare two similar databases and to synchronize them.
The article continues at http://www.sql-server-performance.com/lockwoodtech_sqldiff_spotlight.asp