We’re starting a large scale conversion of our development processes with some very old database servers. Some of these databases were developed over 10 years ago, and they were never checked into source control. As our team develops new features, they’ve been using Red Gate’s SQL Change Automation to develop database projects along side their applications; it’s an impressive tool, and we’re getting ready to tackle older databases in an effort to improve our code base.
But, first, we need to determine what databases are already source control and which ones are not. Most of these databases and applications are minimally documented, so most of our development team doesn’t know what’s actually in production. To discover what databases are already part of SCA, I created a simple SQL script. It looks for the existence of the [dbo].[__MigrationLog] table, an artifact of the SCA process. I can then tell when a snapshot was last deployed, and what version was given.
CREATE TABLE #tmp (dbname varchar(1000), completedate Datetime, version varchar(200)) DECLARE @sql varchar (MAX) SET @SQL = ' USE ?; If exists (SELECT * from sys.tables t WHERE t.name = ''__MigrationLog'') SELECT db_name() dbName, MAX(complete_dt) completeDate, MAX(version) version FROM dbo.__MigrationLog ' INSERT INTO #tmp exec sp_msforeachdb @SQL SELECT * FROM #tmp DROP TABLE #tmp