Just about everyone is familiar with the infamous ‘Not Responding’ message you see when running a GP upgrade.  The advice that I give to people is “If it’s not presenting you with an error or saying it’s finished then it’s still running”.  Just walk away and get some coffee or catch up on some email and let it run.

But what if the update screen is gone, the window doesn’t say ‘Not Responding’ and you’re simply staring at a grey screen?  You’ve been staring at this grey screen now waiting for something to happen for far too long.  How do you know if your upgrade has truly finished?  This was the question presented to me recently by a Customer running an upgrade.

You should be able to determine what is happening with your upgrade by looking at a single table, the DB_Upgrade table.  The DB_Upgrade table is in your DYNAMICS database and holds the version information for each database and module installed in your environment.  I’m going to briefly explain what each of these columns are used for and how you can look at them to determine what is happening with your upgrade.

The first two columns are self-explanatory, db_name and PRODID.  There should be a record for every module and database in your environment.  The DB_Upgrade table is one of the tables GP uses for version checks and keeping track of what version each module is at.

The next 6 columns are all about your version.
db_verMajor
db_verMinor
db_verBuild

db_verOldMajor
db_verOldMinor
db_verOldBuild

This is the version of each module for each database in your environment.  Just pretend that there is a dot between each column and you’ll get your version.  Each module will usually have its own version, but you can get your main GP version from PRODID 0.

For Example:

The following two versions are both 11.0.2044 for DYNAMICS, PRODID 0 (GP Core).

These two versions should always match before and after an upgrade.  When you begin an upgrade the 3 db_verOld columns will keep the version that you are upgrading from.  The db_verMajor/Minor/Build columns will change to the version you are upgrading to.  Once your upgrade is finished, the 3 db_verOld columns will change to the new version and both versions will match again.

The next column is the db_status column.  This column keeps track of what step your upgrade is at.  It should be a 0 for every record in the table before and after your upgrade.  When you begin to upgrade this record will begin to increment.  If this column is any number other than a 0 for any database\product record, then your upgrade has either failed or is still running.

These are the columns that matter when running an upgrade.  You can run a select statement against the DYNAMICS..DB_Upgrade table at any time before, during or after your upgrade to make sure things look like they should.

To Recap:


BEFORE UPGRADE

(Versions are the same – db_status is a 0 all the way down)


DURING UPGRADE

(Versions are different – db_status is not a 0)


FINISHED UPGRADE

(Versions now match again – db_status is back to a 0 all the way down for every ProdID)

Thanks and Enjoy!