ApexSQL Source Control
This article explains all necessary steps for successful use of ApexSQL source Control for the first time.
ApexSQL Source Control is a Microsoft SQL Server Management Studio add-in, which integrate source control with SQL Server database development.
Before download and install the add-in, there are some hardware and software minimal requirements that have to be met. All the hardware and software requirements minimal requirements are listed in the Minimum requirements for installing ApexSQL Source Control article.
Before installing the add-in, is a good idea to check supported software, just to be sure that the add-in can be used without any problems, in setup environment. In the Supported software for ApexSQL Source Control article, are listed all supported Windows versions, SQL Server versions, SQL Server editions, SQL Server Management Studio add-in integration and source control systems.
After all these requirements are checked and fulfilled, the installation process can be started. The Setup wizard gives the possibility to choose in which version of Microsoft SQL Server Management Studio ApexSQL Source Control will be integrated.
If everything went well, when a new instance Microsoft SQL Server Management Studio is opened, the ApexSQL folder, with the ApexSQL Source Control menu, will be present.
One more thing before starting to use ApexSQL Source Control, is to check all necessary permissions for handling SQL Servers and databases. Different type of permissions are required for the Dedicated and for the Shared development models. All the required permissions are listed and explained in the Permissions in ApexSQL Source Control article.
The first step in putting a database under source control is to link it.
To link a database, right click on it in the Object Explorer pane, and from the context menu choose the Link database to source control command:
This action will open the Source control setup wizard.
With ApexSQL Source Control a database can be linked to several source control systems. For some of them, like Git and Team Foundation Server, before the linking process can be started, additional requests must be fulfilled. The explanations about how to meet those requests, for Git and Team Foundation Server, are listed in the following articles:
The linking process is divided into several steps. In the first step (the Connection type tab) of the Source control setup wizard, the connection type must be chosen. ApexSQL Source Control provides two types of connection:
If native connection type is chosen, then the user must decide to which source control system will link a database. ApexSQL Source Control natively supports five source control systems:
In the second step (the Development model tab) of the Source control setup wizard, the user must choose the development model in which the selected database will be linked. There are two development model types:
The Differences between the dedicated and shared development models article, can be very helpful in deciding between these two development models.
In the third step (the Object filtering tab) of the Source control setup wizard, ApexSQL Source Control gives the possibility to choose which objects will be excluded from source control. All the most frequent questions about this ApexSQL feature are answered in the Object filtering FAQs article.
The fourth step (the Script options tab) of the Source control setup wizard is about setting the Compare and the Synchronization options for the selected database. Every options under this tab, is explained In the Script comparison and synchronization options in ApexSQL Source Control article.
All linking steps, for any of the natively supported source control systems, are the same, except the fifth and last step (the System login tab) of the Source Control setup wizard. Depending on which source control system is chosen, all information about the final step of the linking process in the Source control setup wizard, can be found in the following articles:
After everything is set, click on the Finish button in the Source control setup wizard. This will link the selected database to a chosen source control system and open the Action center tab.
ApexSQL Source Control creates several database/Server framework objects, which store important SQL Server source control meta data. Where and which framework objects will be created depend on the chosen Development type. Explanations about framework objects and what are they for, is in the ApexSQL Source Control framework objects inventory article.
The Action center tab is one of the main features of ApexSQL Source Control. It can be initiated only for a linked database, from the Object Explorer context menu or from the ApexSQL Source Control toolbar.
Everything that is needed to know about the Action center tab can be found in the Action center article.
Beside tracking the schema changes for the database tables, with ApexSQL Source Control static data changes can also be tracked.
Putting the static data for a table can be done in two ways. Right click on the linked database in the Object Explorer pane and from the context menu, from the More source control options sub menu click the Static data command.
Or choose the specific table in the Object Explorer pane, and then right click on it, and from the More source control options sub menu click the Link static data command. All this and much more about how to work with static data can be found in the Working with static data article.
With ApexSQL Source Control any text based scripts (SQL, client code e.g. C#, Java) can be source controlled along with the database changes. These scripts, in ApexSQL Source Control, are divided into two groups, Custom scripts and Migration scripts. Additional information about these scripts and how to work with them in ApexSQL source Control are in the Source controlling custom scripts article and the Migration scripts introduction and general review article.
With the Project history feature and the Object history features, any change of the database object that is committed to the repository can be reversed. An explanation about how these features works, is in the Historical view article.
The Create label feature, gives the possibility to create a snapshot of the current state of the source controlled database. To create a label for a linked database, click right click on the database in the Object Explorer pane and from the context menu click the Create label command.
The Show labels command, opens the Labels window, where specific label can be chosen to be restored.
The Labels article contains the instructions about how to work with this feature.
When working with a database linked in the shared model, some additional features will be available.
One of these features is the Change log feature, which provides information about any DDL change in a linked database including which user changed an object, when the change was made, and on which object. To allow this type of tracking changes, go to ApexSQL main menu, then the ApexSQL Source Control sub-menu and click on the Options command. When the Options dialog is opened, under the Administration tab, choose a Server and a linked database from that Server to set options for it. Check the Log changes option and click the OK button.
After this, every change made against the chosen database will be audited. To see all log changes made against this linked database, right click on the database in the Object Explorer pane and from the More source control options menu click the Database change log command.
In the Database change log window are listed all made changes, with information about the user who made them and when he made them.
All additional information and instructions are described in the Change log FAQs article.
Check out and Check in are available only when using the Shared database development model in ApexSQL Source Control. In the Checking out and checking in objects article is described all benefits of these features. Additional information about these features are stored in the Object status icons and visualization article.
All additional information about the ApexSQL Source Control features can be found on this link.