Everyone knows that source code belongs in a version control system... but databases aren't typically stored in easily-versioned files. A significant portion of code is left unsecured simply because committing it takes too much time, too much work.
This article will demonstrate how to solve this problem using VersionSQL, GitHub, and SQL Server Management Studio v18. The same steps apply to other source control repositories (authentication modes may vary) and SSMS versions. All software has been installed and the test system has network access to both the target SQL Server and GitHub.
Open SQL Server Management Studio and connect to a SQL Server instance. Right-click on your database in the Object Explorer pane and select "Connect to Version Control". This will open the "Connect Database to Version Control" dialog.
Copy the https repository path from GitHub and paste it into VersionSQL.
After clicking OK you will be prompted to log in and grant VersionSQL access.
That's it! Your database is now connected to source control. Continue on to check in your database scripts.
A version control system connection does little good if nothing is ever checked in, so VersionSQL immediately prompts for a full commit after setup.
(Note: You can always initiate a full-database commit later by right-clicking on the database in the Object Explorer and selecting "Commit Entire Database")
Click Yes, optionally write a short log message in the window that appears, then click OK to begin sending data.
VersionSQL will script out all the objects in the database and send them to the version control system.
The database objects are saved to plain-text .SQL files, just as if you had scripted and saved them all manually.
Congratulations! You now have a version-controlled database. A quick commit from time to time during development will produce an audit trail of revisions -- a historical record of database schema changes tracking who made each change and why.
I love getting bug reports, reviews, and ideas!
Send me an email at [email protected] or using the form below.