{"id":1569,"date":"2016-10-25T14:34:52","date_gmt":"2016-10-25T12:34:52","guid":{"rendered":"http:\/\/blog.langlitz-it.de\/?p=1569"},"modified":"2017-08-10T12:50:08","modified_gmt":"2017-08-10T10:50:08","slug":"how-to-sharepoint-site-collection-migration","status":"publish","type":"post","link":"https:\/\/www.langlitz-it.de\/?p=1569","title":{"rendered":"How to &#8211; SharePoint Site Collection Migration"},"content":{"rendered":"<p>Es gibt sicher mehrere M\u00f6glichkeiten,\u00a0<em>SharePoint Site Collections<\/em>\u00a0zu migrieren. Die im Folgenden beschriebene Vorgehensweise ist aber von mir getestet und f\u00fcr gut befunden worden \ud83d\ude42<\/p>\n<p>Es kann immer zu Inkompatibilit\u00e4ten zwischen den verschiedenen Versionen kommen. Hierauf gehe ich aber nicht n\u00e4her ein. Das w\u00fcrde den Rahmen sicher sprengen. Des Weiteren muss beachtet werden, dass eine Migration von <em>SharePoint<\/em> 2007 auf 2013 nur mit dem Zwischenschritt \u00fcber 2010 m\u00f6glich ist. Im beschriebenen Beispiel habe ich eine 2007er <em>Site Collection<\/em>, die auf einen 2013 migriert werden\u00a0soll. Also werde ich auch den Zwischenschritt mit beschreiben.<\/p>\n<hr \/>\n<h2>1.) Backup \/ Restore Site Collection<\/h2>\n<p>Zun\u00e4chst wird ein Backup der zu migrierenden <em>Site Collection<\/em> mit <em>STSAdm<\/em>\u00a0erstellt:<\/p>\n<p><em>STSAdm -o Backup -URL $SiteURL -Filename $Filename<\/em><\/p>\n<p>Das so erstellte Backup spiele ich nun auf dem gleichen <em>SharePoint<\/em> in einer separaten <em>WebApplication<\/em> mit einer eigenen Datenbank wieder ein. So ist sichergestellt, dass die Site exklusiv in einer DB abgelegt wird. Sollten Sie mehrere Migrationen durchf\u00fchren, sollten sie nach Abschluss einer solchen am besten die Datenbank auf dem <em>SQL<\/em> l\u00f6schen. Das stellt auf jeden Fall die sauberste Vorgehensweise dar. Achten Sie darauf beim Restore schon die zuk\u00fcnftige (nicht die seitherige) <em>URL<\/em> anzugeben.<\/p>\n<p>Erstellen Sie (falls noch nicht vorhanden) eine neue <em>Webapplication<\/em> (z.B. \u00fcber die <em>Central Administration<\/em>)<\/p>\n<p><a href=\"http:\/\/blog.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1573\" src=\"http:\/\/blog.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_1.jpg\" alt=\"sps_Mig_1\" width=\"945\" height=\"516\" srcset=\"https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_1.jpg 945w, https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_1-300x164.jpg 300w, https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_1-768x419.jpg 768w\" sizes=\"(max-width: 945px) 100vw, 945px\" \/><\/a><\/p>\n<p>Der folgende Dialog ist relativ selbsterkl\u00e4rend. Vergeben Sie einen Namen f\u00fcr die <em>WebApplication<\/em> und geben Sie den entsprechenden <em>Service Account (Application Pool Username)<\/em> an. Achten Sie darauf, beim Anlegen auch eine neue Datenbank anzugeben.<\/p>\n<p>Nun erfolgt der Restore der <em>Site Collection<\/em> in diese <em>WebApplication<\/em>.<\/p>\n<p><em>STSAdm -o restore -url $neueSiteURL -hostheaderwebapplicationurl $WebApplicationURL -filename $filename<\/em><\/p>\n<hr \/>\n<h2><em><strong>2.) SQL<\/strong><\/em><\/h2>\n<p>F\u00fchren Sie ein Backup der Datenbank \u00fcber SQL durch.<\/p>\n<p><a href=\"http:\/\/blog.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1574\" src=\"http:\/\/blog.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_2.jpg\" alt=\"sps_Mig_2\" width=\"542\" height=\"289\" srcset=\"https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_2.jpg 542w, https:\/\/www.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_2-300x160.jpg 300w\" sizes=\"(max-width: 542px) 100vw, 542px\" \/><\/a><\/p>\n<p>Nun wird das Backup der DB auf dem (evtl. neuen) SQL restored.<\/p>\n<p><a href=\"http:\/\/blog.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1575\" src=\"http:\/\/blog.langlitz-it.de\/wp-content\/uploads\/2016\/08\/sps_Mig_3.jpg\" alt=\"sps_Mig_3\" width=\"297\" height=\"255\" \/><\/a><\/p>\n<hr \/>\n<h2>3.) Test<\/h2>\n<p>Im n\u00e4chsten Schritt testen Sie, ob die Datenbank migriert werden kann. Dazu nutzen Sie auf dem Ziel <em>SharePoint<\/em> das <em>CMDLet<\/em>\u00a0<em>Test-SPContentDatabase.<\/em><\/p>\n<p><em>Test-SPContentDatabase \u2013Name $ContentDB \u2013WebApplication $WebApplicationURL<\/em><\/p>\n<p>Sollten hierbei keine Fehler zur\u00fcck gegeben werden, war der Test erfolgreich. Achten Sie darauf, dass hierbei keine(!) Erfolgsmeldung erscheint.<\/p>\n<hr \/>\n<h2>4.) Mount<\/h2>\n<p>War der Test erfolgreich, k\u00f6nnen Sie die Datenbank an die <em>WebApplication<\/em> mounten.<\/p>\n<p><em>Mount-SpContentDatabase \u2013Name $ContentDB \u2013WebApplication $WebApplicationURL<\/em><\/p>\n<p>Dieser Vorgang kann je nach Gr\u00f6\u00dfe einige Zeit in Anspruch nehmen.<\/p>\n<hr \/>\n<h2>5.) 2013<\/h2>\n<p>Sollte das <em>Mounten<\/em> erfolgreich gewesen sein, ist die <em>Site Collection<\/em> nun auf den <em>SharePoint<\/em> <em>2010<\/em> migriert. Die weitere Migration auf den <em>SharePoint<\/em> 2013 l\u00e4uft im Prinzip \u00fcber die gleichen Schritte. Der einzige Unterschied ist, dass das initiale Backup der <em>Site Collection<\/em> nun auch \u00fcber <em>CMDLets<\/em> angesto\u00dfen werden kann. Bei 2007 musste noch das <em>STSAdm<\/em> verwendet werden. F\u00fchren Sie also das Backup auf dem <em>SharePoint 2010<\/em> mit folgendem Befehl aus.<\/p>\n<p><em>Backup-SPSite $SiteURL -Path $Filename<\/em><\/p>\n<p>Der Restore erfolgt mit:<\/p>\n<p><em>Restore-SPSite $neueSiteURL -Path $Filename -HostHeaderWebApplication $WebApplicationURL -DatabaseName $ZielContentDB \u2013Force<\/em><\/p>\n<p>Die weiteren Schritte sind identisch den schon beschriebenen.<\/p>\n<hr \/>\n<h2>6.) UserAccountPath \/ ServiceAccountPath &#8211; Optional!<\/h2>\n<p>Wenn Sie eine &#8220;Mandantenf\u00e4higkeit&#8221; ben\u00f6tigen, k\u00f6nnen Sie abschlie\u00dfend noch die Pfade (<em>PeoplePicker<\/em>) f\u00fcr die <em>User<\/em> und den <em>Service Account<\/em>\u00a0setzen. Damit wird gew\u00e4hrleistet, dass z.B. beim \u00a0Berechtigen von Usern nur in den der <em>Site Collection<\/em> zugeordneten <em>OUs<\/em>\u00a0gesucht wird.<\/p>\n<p>Den <em>Userpath<\/em>\u00a0k\u00f6nnen Sie mit folgendem Befehl setzen.<\/p>\n<p><em>Set-SPSite $SiteURL\u00a0-UserAccountDirectoryPath &#8220;OU=Name,DC=Domain,DC=xx&#8221;<\/em><\/p>\n<p>Der <em>ServiceAccountDirectoryPath<\/em> kann leider nur \u00fcber <em>STSAdm<\/em> (auch noch in 2013) gesetzt werden. Warum wei\u00df alleine MS&#8230;<\/p>\n<p><em>STSAdm -o setproperty -pn peoplepicker-serviceaccountdirectorypaths -pv &#8220;OU=Name,DC=Domain,DC=xx&#8221; -url $SiteUrl<\/em><\/p>\n<hr \/>\n<h2>7.) User Migration<\/h2>\n<p>Wenn es erforderlich sein sollte, k\u00f6nnen Sie noch die <em>User<\/em>, die auf die <em>Site Collection<\/em> berechtigt sind, migrieren. Dazu dient das <em>CMDLet Move-SPUser, bzw Set-SPUser<\/em>.<\/p>\n<p>Mit <em>Move-SPUser<\/em> ersetzen Sie schon vorhandene <em>User<\/em>. Diese werden aber im Adressbuch des <em>SharePoint<\/em> dann noch mit dem alten <em>Displayname<\/em> dargestellt. Sollten Sie auch diesen \u00e4ndern wollen\/m\u00fcssen, geht das mit <em>Set-SPUser -Displayname.\u00a0<\/em><\/p>\n<h2>8.) Live Datenbank<\/h2>\n<p>Die migrierte <em>Site Collection<\/em> befindet sich immer noch in einer separaten Datenbank. Das macht im Betrieb nat\u00fcrlich wenig Sinn. Verschieben Sie nach erfolgreicher Migration die <em>Site Collection<\/em> noch in eine entsprechend produktive Datenbank.<\/p>\n<p><em>Move-SPSite $SiteURL -DestinationDatabase $ContentDB<\/em><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Es gibt sicher mehrere M\u00f6glichkeiten,\u00a0SharePoint Site Collections\u00a0zu migrieren. Die im Folgenden beschriebene Vorgehensweise ist aber von mir getestet und f\u00fcr gut befunden worden \ud83d\ude42 Es kann immer zu Inkompatibilit\u00e4ten zwischen den verschiedenen Versionen kommen. Hierauf gehe ich aber nicht n\u00e4her &hellip; <a href=\"https:\/\/www.langlitz-it.de\/?p=1569\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[630,269,553,626,629,627,628],"_links":{"self":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/1569"}],"collection":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1569"}],"version-history":[{"count":14,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/1569\/revisions"}],"predecessor-version":[{"id":1587,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=\/wp\/v2\/posts\/1569\/revisions\/1587"}],"wp:attachment":[{"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.langlitz-it.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}