Am a keen follower of Microsoft's SharePoint Blog and proud to provide this direct from the Microsoft Tech Community:
When upgrading a Content DB from Sharepoint 2016 to Sharepoint 2019 fails with following error message
Microsoft.SharePoint.Upgrade.SPUpgradeException: An extension defined in the database is not registered with the farm.
at Microsoft.SharePoint.Administration.SPContentDatabaseExtensionValidator.LogAndThrowIfNotSubset(IEnumerable`1 farmExtensionTypes, SPContentDatabaseExtensionCollection databaseExtensions)
at Microsoft.SharePoint.Administration.SPContentDatabaseExtensionValidator.VerifyDatabaseCompatibility(SPContentDatabase database)
at Microsoft.SharePoint.Administration.SPContentDatabaseCollection.Add(SPContentDatabase database, Boolean provision, Guid webApplicationLockId, Int32 addFlags)
at Microsoft.SharePoint.Administration.SPContentDatabaseCollection.Add(Guid newDatabaseId, String strDatabaseServer, String strDatabaseName, String strDatabaseUsername, String strDatabasePassword, String strDatabaseFailOverServer, Int32 warningSiteCount, Int32 maximumSiteCount, Int32 status, Boolean provision, Guid lockId, Int32 addFlags)
at Microsoft.SharePoint.Administration.SPWebApplication.AddContentDatabase(SPWebApplication application, String strDatabaseServer, String strDatabase, String strDatabaseUser, String strDatabasePassword, String strDatabaseFailOverServer, Int32 cSiteWarning, Int32 cSiteLimit, Boolean bAssignDatabaseId, Int32 iAddFlags)
at Microsoft.SharePoint.PowerShell.SPCmdletNewContentDatabase.InternalProcessRecord()
at Microsoft.SharePoint.PowerShell.SPCmdlet.ProcessRecord()
The ULS Log clearly shows
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopbd |
Medium |
Ensuring farm m_extensions. |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopbe |
Medium |
Ensuring database m_extensions. |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopa1 |
Verbose |
m_extensions is already initialized |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopa1 |
Verbose |
m_extensions is already initialized |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopbi |
High |
The m_extensions of the database were not a subset of the m_extensions of the farm. |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopbk |
High |
farm extension: System.RuntimeType |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopa1 |
Verbose |
m_extensions is already initialized |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopbl |
High |
database extension: Microsoft.SharePoint.Administration.SPGlobalExtension, value 16.0.6.0, latestVersion 16.0.8.0 |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopbl |
High |
database extension: Microsoft.Office.Project.Server.Database.Extension.ProjectDatabaseExtension, value 16.1.310.0, latestVersion 17.0.288.0 |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aopa1 |
Verbose |
m_extensions is already initialized |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aq4ea |
Medium |
Calling extension method for SPGlobalExtension on object SPContentDatabase Name=SP19_Content. |
PowerShell.exe (0x2478) |
0x2EFC |
SharePoint Foundation |
Database Extensions |
aq4ea |
Medium |
Calling extension method for ProjectDatabaseExtension on object SPContentDatabase Name=SP19_Content. |
Compare the extensions registered and we can see project extension is missing. here is how you can compare.
$contentservice=[Microsoft.sharepoint.Administration.SPwebservice]::ContentService
$contentservice.RegisteredDatabaseExtensionTypes >>SP2016Farm_registered_Extn.txt
$contentservice=[Microsoft.sharepoint.Administration.SPwebservice]::ContentService
$contentservice.RegisteredDatabaseExtensionTypes >>SP2019Farm_registered_Extn.txt
Resolution:
Execute the following to register the missing extension
$svc = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
[System.Reflection.Assembly]::LoadWithPartialName(“Microsoft.Office.Project.Server.Database.Extension”) | FL
$svc.RegisteredDatabaseExtensionTypes.EnsureAdded([Microsoft.Office.Project.Server.Database.Extension.ProjectDatabaseExtension])
$svc.Update($true)
Related Posts
The above is kindly provided by the Microsoft Tech Community!