Objects are shown in the Action center tab as non-existing on both sides and history for those objects is not accessible

Applies to

ApexSQL Source Control

Symptoms

The objects containing Windows reserved words in their name are committed to the source control repository with the 2021.01.2063 or 2021.01.2072 add-in versions. Upgrade to the newer add-in version is done, the Action center tab is opened but the already committed objects are listed.

The upgrade to any newer add-in version than 2021.01.2063 is done, the Action center tab is opened but already committed objects are listed as non-existing on both sides and any previously committed object will not be available through the Project and Object history windows.

Action center tab after upgrading to the 2021.01.2079 add-in version

Objects listed in the Repository column or any previously committed version of them cannot be applied against a database since the Get changes from the repository window will be opened empty:

Get changes from the repository window after upgrading to the 2021.01.2079 add-in version

Problem

The add-in stores all database object scripts on the file system as a part of the backup, compare, and versioning system, and if an object name contains any of the Windows reserved words, a script with that file name cannot be created on the file system. Because of that, the add-in creates script names by changing one letter, for example, if a table name is aux.Table_con, its script will be saved on the file system not like aux.Table_con.sql but like this au_.Table_co_.sql.

This was recognized as an issue and resolved in the 2021.01.2079 add-in version.

Solution

There are two ways to resolve this issue after upgrading the add-in to version 2021.01.2079.

1st solution

The easiest solution to this is to commit all the listed changes in the Action center tab to the source control repository. This will delete the wrongly named object scripts and create new, correctly named object scripts, and synchronization between database and source control repository can be established again.

2nd solution

For every script in the source control repository committed with the 2021.01.2063 and 2021.01.2072 add-in versions, the name of the object script should be changed manually, directly on the repository.

If a Windows reserved word is in the schema name (e.g. aux.Table), on the source control repository related script will be stored under the modified name (e.g.au_.Table.sql), the schema part of the script name should be changed by adding % at the start and end of the Windows reserved word (e.g. %aux%.Table.sql)

If a Windows reserved word is in the object name (e.g. dbo.Table_aux) the related script stored on the source control repository will have a modified name (e.g. dbo.Table_au_.sql), it should be changed by removing the changed letter to the correct one (e.g. dbo.Table_aux.sql).

Neither of those solutions will restore history for these types of objects, but from that point, the synchronization between the database and the source control repository will be restored and the history of changed objects will be preserved further on.

Affected versions:

This issue will be detected with all ApexSQL Source Control versions from the 2021.01.2079 version and newer if previously objects containing Windows reserved words are committed to the source control repository with the 2021.01.2063 or 2021.01.2072 add-in versions.