DBmaestro Brings DevOps for Database to Microsoft SQL Server
The database source control and deployment system DBmaestro now offers SQL Server support. This tool, which is also available for Oracle, is designed to be used in environments where multiple instances of a database exist in development, QA, and staging branches that need to be kept in sync with source code changes.
One of the features that make DBmaestro unique is that it doesn’t just version objects. It can also version data, which has been historically a major problem for development teams that use a lot of static lookup tables.
Another distinctive feature of DBmaestro is their enforced change control support for databases. A major risk for companies is the application of ad hock changes to the database. In theory anyone with reasonably high access to the database can just go in and start making changes to table structures, stored procedures, and the like.
DBmaestro’s Change Policy Enforcement, first offered for Oracle, integrates with the database itself to ensure no unauthorized changes are made. DBmaestro claims that database integration is essential here,
Change policy enforcement is integrated with the database engine to make sure it is never bypassed. This unique technology makes sure there are no “out of process changes”. If change policy was not enforced in the database engine, but rather through an application, one could easily bypass it by using another Oracle client tool, various IDEs or even with command line tools. DBmaestro TeamWork makes sure out of process changes are denied execution, and prevented before creating any damage to the database, or your company’s due processes.
To execute a command that changes a database object, the DBA or database developer must use the Check-Out Action to unlock the object within DBmaestro TeamWork. This action guarantees that each change is documented correctly. After the DBA or database developer completes the changes and performs the Check-In Action, DBmaestro TeamWork closes the change cycle by saving the object’s new definition in the repository and setting the object’s status to “locked.
On the deployment side DBmaestro’s deep integration with source control really shines. Most tools simply compare the current database state (objects and/or data) with the desired state. DBmaestro uses a three-way merge that takes into consideration the source of the difference. Their justification for this design is,
There are compare-and-sync tools that compare two database schemas and show the differences between them, but there is a huge risk in relying on these tools. The risk results from the inability to determine the origin of each change. Was the change made in a team’s development environment or in the integration environment after another team had already integrated their changes? This question is difficult to answer without comparing the database schemas to a baseline and without having an accurate audit trail of the changes in each environment (which is an important aspect of version control).