Sono vivo, scusate l’assenza di oltre una settimana ma è stato un periodo incasinatissimo, zero tempo per fare nulla. Lavorativamente parlando è stato un delirio.. Comunque torno con un articolo molto tecnico: ripristino (o migrazione) di una sitecollection di una webapplication da un database di backup ad un database di produzione in Microsoft Office Sharepoint 2007. Roba molto tecnica, che se non sapete cos’è Microsoft Office Sharepoint non ci capite nulla, l’articolo prevede che abbiate le conoscenze tecniche per creare webapplication,lavorare con microsoft sql server etc…. il succo comunque è ripristinare una sitecollection da un backup sql in sharepoint 2007. Ecco un pò di storia,dopo aver deployato l’ultimo software in sharepoint gli sviluppatori si sono accorti che causa baco nel processo di importazione una sitecollection molto importante era stata cancellata,qualcuno nell’ambiente di test non ha fatto il proprio lavoro correttamente… Così mi sono messo a googlare e a fare i numeri da circo per capire come ripristinare la site collection cancellata nella maniera più veloce ed indolore. Dopo diverse prove ho trovato questo metodo, che vi descrivo ora in breve e poi in dettaglio.
Se il db di backup contiene anche altre sitecollection oltre a quelle da ripristinare eseguire anche i punti 1 e 2 altrimenti procedere oltre.
- Prendere il db di backup e ripristinarlo in sql anche con un altro nome e agganciarlo ad una nuova web application che può, anzi deve essere diversa da quella ufficiale.
- Eliminare quindi le sitecollection in eccesso e poi eliminare la webapplication senza cancellare il db
- Agganciare il db alla webapplication ufficiale, migrare la sitecollection dal db di di backup al db di produzione.
Non sembra difficile e in effetti se si ha un backup del db giusto si tratta solo di lanciare un paio di comandi di migrazione, solo che in ambienti di produzione per non rischiare di fermare applicazioni su cui lavorano centinaia di persone bisogna fare tutto con la massima cautela , quindi ecco le istruzioni dettagliate. Io ci sono andato proprio con i piedi di piombo ed ho effettuato ulteriori passaggi per depurare il db di backup in modo da agganciare alla webapplication ufficiale solo la sitecollection che mi mancava. Quindi ho preso il db di backup e tramite sharepoint ho cancellato tutte le altre sitecollection in eccesso.
- Creare una nuova web application al quale verrà collegato in seguito il db di backup che contiene le sitecollection da ripristinare.
- Dal sql server restorare il db di backup dando un nome differente all’originale in modo da non sovrascrivere i dati originali.
- Impostare le permission sul db ripristinato in modo analogo ai database della web application appena creata (stessi dbowener etc..).
- Collegare il db appena importato alla nuova web application, digitare i seguenti comandi dal server che ospita la central administration consolle di share point:
- Cd “C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\”
- stsadm.exe -o addcontentdb -url VOSTRO_URL -databasename VOSTRO_DB -databaseserver VOSTRO_DB_SERVER -databaseuser VOSTRO_USER -databasepassword VOSTRO_PASSWORD
- NOTA: per comodità si può creare un utente locale di sql che sia owner del db di backup restorato, utilizzando questo metodo io non ho avuto problemi. Al contrario utilizzando utenze di dominio il comando non veniva eseguito, molto probabilmente non veniva riconosciuta l’utenza di dominio.
- Verificare che nella web application compaia il nuovo db contenti le varie sitecollection.
- A questo punto la web application conterrà due database, uno suo originale ed uno appena agganciato.
- Dalla consolle Central Administration posizionarsi sulla nuova web application e poi sul db appena collegato, eliminare quindi le sitecollection che non si vogliono ripristinare,
- Dal sql server effettuare uno shrink del db importato in modo da ridurlo alle dimensioni effettive delle sole sitecollection che si vogliono ripristinare.
- Cancellare la webapplication appena creata senza cancellare il secondo db agganciato e shrinkato.
- Sul db appena shrinkato impostare gli stessi permessi del db di produzione nel quale verrà trasferita la site collection (Stesso dbowener etc..).
- NOTA: per comodità si può creare un utente locale di sql che sia db owner per entrambi i db.
- Agganciare il db che contiene la site collection da ripristinare alla web application con il seguente comando:
- Cd “C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\”
- stsadm.exe -o addcontentdb -url VOSTRO_URL -databasename VOSTRO_DB -databaseserver VOSTRO_DB_SERVER -databaseuser VOSTRO_USER -databasepassword VOSTRO_PASSWORD
- Verificare che nella web application compaia il nuovo db contenenti le varie sitecollection da migrare.
- Creare un file xml con la lista delle site collection da migrare, per farlo eseguire i seguenti comandi dal server che ospita la central administration consolle di share point:
- Cd “C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN\”
- C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\BIN>stsadm -o enumsites -url VOSTRA_URL > lista.xml
- Nel file xml controllare che siano presenti solo ed esclusivamente le site collection che si vogliono migrare, nel caso ce ne fossero altri cancellare pure i record ad esse collegate. Non toccare nessun altro record, come il count o altro, se bisogno cancellare solo ed esclusivamente le site collection in eccesso. Se i passi precedenti sono stati eseguiti correttamente non bisognerà cancellare nulla.
- Migrare le site collection da il database di backup al database di produzione con il seguente comando:
- stsadm -o mergecontentdbs -url VOSTRAURL -sourcedatabasename DBBACKUP -destinationdatabasename DBPRODUZIONE -operation 3 -filename lista.xml
- A questo punto comparirà un messaggio di operazione conclusa correttamente che indicherà di riavviare IIS.
- Riavviare IIS con il seguente comando:
- Riavviare IIS con il precedente comando su tutti i nodi frontend.
- Controllare dalla consolle di sharepoint che la site collection sia stata migrata dal db di backup shrinkato al db di produzione.
- In caso positivo rimuovere il db di backup shrinkato in precedenza dalla webapplication tramite la consollle di Sharepoint
- Eventualmente ,se create, rimuovere le varie utenze locali di sql utilizzate per effettuare le operazioni sui database.
Se tutto è andato per il verso giusto la sitecollection sarà ripristinata in maniera corretta, io ho seguito questa procedura in ambiente di produzione senza fermare nulla, cioè gli utenti utilizzavano l’applicazione su sharepoint e non si sono accorti di nulla.. zero femi, nessuno si è accorto di nulla, non ci sono stati impatti e tutto è andato per il verso giusto.
Detto questo posso dirvi che l’interfaccia grafica di sharepoint è un vero e proprio labirinto e che il comando da shell stsadm è molto più comodo e pratico.
Sharepoint è molto interessante e mi piacerebbe approfondirlo ma al solito manca il tempo…
Spero che questo articolo possa tornare utile a qualcuno, se io avessi trovato queste informazioni quando ne avevo bisogno avrei sicuramente risparmiato due tre ore di lavoro…
1. Creare una nuova web application al quale verrà collegato in seguito il db di backup che contiene le sitecollection da ripristinare.
Vota l'articolo
Written by Croccobiscotto · Filed Under How-to
Tagged: 2003, 2007, backup, mergecontentdbs, microsoft, microsoft office sharepoint 2007, migrare, moss, moss 2007, office, restore, ripristinare, server, sharepoint, sitecollection, sql, sql server, stsadm, webapplication, windows