We use MS SQL Server and C#. Our database is under sourse control and I will tell you some details of our implementation. We had implemented two operations:
Export database to plain-text files. Database schema files: tables.sql relationships.sql views.sql ... and table contents files: Data/table1.txt Data/table2.txt ... It is easy to review database changes using source control logs because all these files has plain-text format. Imlementation is based on classes from namespace Microsoft.SqlServer.Management.Smo.
Import database from this plain-text files. Implementation is strightforward - just execute sql statements from *.sql files, and then execute a bunch of inserts.
So we have two bat-files: create-test-databse.bat and export-test-database.bat. When a developer needs a new test database he just executes the bat-file and waits for a minute. Every functional test, which needs a database creates a new database, uses it, and then kills it. But I should say that it is not very fast operation. :(
So what instruments do YOU use to put your database under source control? I mean how do you implement operations "create test database" and "export test database" for example?