Spostare i database di contenuto di Sharepoint 2007 è un'attività che è stata notevolmente semplificata rispetto alla versione precedente del prodotto, in quanto è possibile fare un detach/attach oppure un backup/restore del database tramite SQL Server Management Studio, per poi effettuare alcune operazioni eseguite a riga di comando tramite l'utilizzo dell'utility stsadm.
Vediamo in dettaglio tutti i passi da seguire:
1- lanciare il comando stsadm specificando l'operazione "preparetomove"
stsadm -o preparetomove -contentdb SERVER:DBNAME - site http://mioindirizzomossVECCHIAFARM
Questa operazione preliminare serve a preparare il database di cotenuto ad essere spostato, stoppando temporaneamente il job si sincornizzazione dei profili e del memberhsip sulla relativa web application.
2- Effettuare un backup del database di contenuto tramite SQL Server Management Studio
3- Effettuare il detach del database di contenuto dalla relativa web application, lanciando il comando stsadm e specificando l'operazione "deletecontentdb"
stsadm -o deletecontentdb -url http://mioindirizzomossVECCHIAFARM -databaseserver SERVER -databasename DBNAME
4- Restorare il database SQL nella nuova farm tramite SQL Server Management Studio
5- Creare una nuova web application vuota nella nuova farm, specificando un database temporaneo (DBNAME_TEMP)
6- Effettuare il detach del database di contenuto temporaneo appena creato, tramite il comando "deletecontentdb" visto precedentemente, ma riferito alla nuova farm
stsadm -o deletecontentdb -url http://mioindirizzomossNUOVAFARM -databaseserver NEWSERVER -databasename DBNAME_TEMP
7- Effettuare l'attach del database di contenuto sulla nuova web application propria della nuova farm SharePoint, lanciando il comando stsadm e specificando l'operazione "addcontentdb"
stsadm -o addcontentdb -url http://mioindirizzomossNUOVAFARM -databaseserver NEWSERVER -databasename DBNAME
Se avete seguito correttamente tutti i passi, vi ritroverete i medesimi contenuti presenti nella vecchia farm all'interno della nuova web application propria di una nuova farm SharePoint.
Non è così complicato dai..
L'unica cosa su cui fare attenzione, è l'operazione preliminare "preparetomove". Se questa, infatti, non viene lanciata, una volta attaccato il database di contenuto nella nuova farm vi ritroverete all'interno dell'event viewer dei messaggi di errore, ad intervalli di tempo regolare, del tutto simili a questo:
Failure trying to synch web application [Web_App_GUID], ContentDB [Content_DB_GUID] Exception message was A duplicate site ID [SiteCollection_GUID]([SiteColleciton_URL]) was found. This might be caused by restoring a content database from one server farm into a different server farm without first removing the original database and then running stsadm -o preparetomove. If this is the cause, the stsadm -o preparetomove command can be used with the -OldContentDB command line option to resolve this issue.
L'errore viene scatenato dal meccanismo di sincronizzazione dei profili che si trova due identificativi per due database di contenuto diversi, quello nuovo e quello temporaneo che abbiamo precedentemente cancellato.
Per risolvere questo problema, evitando di preoccuparci riguardo quanto ci dice il testo stesso dell'errore, è necessario lanciare il seguente comando:
stsadm -o sync -deleteolddatabases 0
Tramite l'operazione "sync" dell'utility stsadm è possibile ripulire tutti i record della tabella di sincronizzazione siti/profili che corrispondono a database che non sono più legati a nessuna web application (chiaramente senza cancellarli fisicamente dal file system).