I have one main database and let’s say 10 developers’ databases. I need some way to synchronize main database schema and developers’ databases schemas. And I need some way to make different test data for developers’ databases. One more nuance is that developers’ databases may be run not on the same database server as main database.
What are your suggestions in implementing this task?
Have your developers write upgrade scripts for each change they make. Store these scripts in source control, along with the rest of the code. Before deploying, run the scripts on a backup copy of your production database (SQL Server makes this fairly easy – you can simply restore a backup file to a different database), and test the new code against that.
There are tools to diff databases, but they are complicated and far from perfect.