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:
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:
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...
In ultimo, prima di rieseguire l'aggiornamento della
CU, conviene verificare il
database con il comando
PowerShellTest-SPContentDatabase SP2016_Content_Portal
se non ci sono più errori, si puo eseguire
Get-SPContentDatabase SP2016_Content_Portal | Upgrade-SPContentDatabase
per assicurarsi che si aggiornato alla versione attuale, infine eseguire lo
SharePoint Configuration Wizard'.