Recentemente mi è capitato di aggiornare uno SharePoint 2016 alla CU October 2020, purtroppo l'aggiornamento falliva con questo errore:
An exception of type Microsoft.SharePoint.Upgrade.SPUpgradeException was thrown. Additional exception information:
Found 1 web(s) using missing web template 10000 (lcid: 1040) with compatibility level 15 in ContentDatabase SP2016_Content_Portal. (EventID:ajdkm)

The site definition with Id 10000 is referenced in the database [SP2016_Content_Portal], but is not installed on the current farm for sites with compatibility level 15. The missing site definition may cause upgrade to fail. Please install any solution which contains the site definition and restart upgrade if necessary. (EventID:ajdkn)
L'errore risulta bloccate e impediva l'aggiornamento. Questo anche se i siti esistenti, con il template mancante, funzionavano regolarmente, o meglio, funzionavano perché si trattava di siti usati solo come redirect verso altri siti, quindi il template era ininfluente.

La soluzione ovvia è reinstallare il template di sito mancante. Ma nel mio caso non era percorribile.

Se il template di sito non è vincolante al funzionamento di SharePoint, come nel mio caso, altri suggeriscono di esportare il sito con PowerShell, spacchettarlo, modificare il riferimento al template con uno esistente, rifare il pacchetto e ricreare il sito.

In alternativa si può procedere modificando direttamente il database.
ATTENZIONE: la modifica diretta al database di SharePoint non è supportata. Se volete farlo, assicuratevi di fare prima un backup e soprattutto provatelo in un sistema non di produzione.
Con questa query T-SQL si elencano tutti i siti con il numero di template indicato nell'errore:

T-SQL

SELECT TOP (1000) [Id], *
FROM [SP2016_Content_Portal].[dbo].[AllWebs]
WHERE [WebTemplate] = 10000 
una volta trovato l'ID del sito, si può procedere con l'aggiornare il campo WebTemplate con l'Id di un template esistente:

T-SQL

UPDATE [SP2016_Content_Portal].[dbo].[AllWebs] SET
  [WebTemplate] = 1  -- 1=TeamSite oppure 39=Publishing site
WHERE [ID] = '1CF49D4C-BF81-4C75-BE58-F0F031D04FEA'
se il sito era un Team Site si può usare l'id 1, se era di tipo Publishing l'id 39, ecc...
Per l'elenco di tutti i template e dei rispettivi id vedi SharePoint Site Template ID – Microsoft Office 365

In ultimo, prima di rieseguire l'aggiornamento della CU, conviene verificare il database con il comando PowerShell

PowerShell

Test-SPContentDatabase SP2016_Content_Portal
se non ci sono più errori, si puo eseguire

PowerShell

Get-SPContentDatabase SP2016_Content_Portal | Upgrade-SPContentDatabase
per assicurarsi che si aggiornato alla versione attuale, infine eseguire lo SharePoint Configuration Wizard'.
Tags:
Database75 SharePoint 2013136 SharePoint 201667 SharePoint 201917 SQL Server100 T-SQL66
Potrebbe interessarti anche: