*Edit [11/23/2011]: Alright, if you tried these instructions before now, they probably didn’t work. I attempted this again, and found a lot of mistakes. I am reworking this now, and will be doing this one more time for good, so I might make a few more minor changes.
I recently needed to move a SPS 3.0 server to a new Foundation 2010 server. Now, Microsoft posts several documents on how to do this, but I think we all know that their documents aren’t always that helpful. I first tried to move the Sharepoint to another server, then do an updgrade, but it did not go so smoothly. So I tried it again using the “database attach” method. I did a lot of Googling, and tried an unbelievable number of things before I finally got the upgrade to work. I’ve collected my steps here. Hopefully, I remembered everything correctly. There were what seemed like a lot of steps, but it mostly went smoothly. Read on for my guide to upgraded to SharePoint Foundation 2010 and I hope it helps you with your upgrade.
Step 1: Preparation
The first step is to prepare your new server. In my case, I am using Windows 2008 R2 64-bit. There are several things you will need to download to get started, and have them all available and ready to go. I am listing them here, so that you will be ready:
Microsoft SharePoint Foundation Server 2010
Microsoft SQL Server 2008 Management Studio Express
Do not install these programs yet, just have them downloaded and ready to go.
I recommend also that you put the path to the BIN folder (where stsadm.exe is located) in the PATH environment variable on both servers. It is absurd having to bounce around folders and typing full paths for a lot of things. This is located here:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\xx\BIN
(xx being the version number, 12 or 14) I’d recommend you do this under Advanced in the System properties so that it sticks. Restart your command prompt window if necessary.
Be sure to join the computer to the domain if you are using one, I neglected to do this during my testing, and I ran into all kinds of issues.
Step 2: Backup Old Server
Next, you will need to backup your old content database. There are a number of ways to do this, but when doing the database attach method, all you need to backup is the content database. For this you will need to run Microsoft SQL Server 2005 Management Studio Express. If you do not have it you can get it here. I am not keeping the same server name and will be renaming the site. This will help allow people to still access data while getting the new site online. If you plan on doing your move right away, you need to lock changes to the database. If you are just testing (which you are, right?), you don’t need to lock it down right away. You can lock down the database by setting it to read only. You can do that before you do the backup below. This command should set the site to Read-Only:
stsadm -o setsitelock -url http://domain/ -lock readonly
Open the Management Studio and log into the COMPUTERNAME\MICROSOFT##SSEE database. If it fails, try this instead:
Find the database called WSS_Content, right-click, Tasks, Back Up…. In the options, choose File and add a filename. Make sure that it is a Full backup. Once you have the file, go ahead and move it to your new server. You will be needing it there shortly.
Step 3: Install SharePoint 2010
You are now ready to install SharePoint Foundation 2010. Run the installer, and install the software prerequisites first. After that is installed, go ahead and start the install for SharePoint Foundation. When the install is finished, run the Configuration Wizard. You can accept most of the defaults. In our case, we used a farm, but with a standalone server. If you are doing a farm, this guide may not help you much. When it is finished, it will open your newly created, and empty, SharePoint website.
Step 4: Remove New Content Database
Login to the SharePoint 2010 Central Administrator page and go to Application Management > Manage content databases. [We will be using the default computer name for the web application name. If you want to do a new one (such as keep the old name), now would be a good time to do it, or you can just do an Alternate Access Mapping.] Click on the database called WSS_Content and scroll to the bottom. Check the box Remove content database and click OK. This simply detaches the database from the Web application you have selected at the top of the page. This leaves the SharePoint site in a broken state, but no worries, we will soon be attaching a new one.
Step 5: Import Old Database
You should have copied over your database earlier, you will need this now. Install the SQL 2008 Studio. Now, this may be confusing, because the installer makes no mention of it being Studio, and instead shows that it is SQL Server 2008 only. Also, in Windows 2008, you will get a Known Compatibility Issue window, just ignore it and run the program. Click on Installer on the left, and choose the first option. If the installer does not run for you (and gave an error message about a window handle), like it did not for me, here is a tip. Leave this installer window open (close the error). On your C: drive, there will be a folder that was created by the installer. Go into that folder and find the setup11.exe file and run it. This opens another installer, and it should work through there. During the install, you will see an option for the Management Studio, be sure to selected. Choose all other defaults. When it is finished, you will have the new Studio application.
Log into the newly created database at COMPUTERNAME\SHAREPOINT (you will probably have to type this in manually). You will see a WSS_Content_<guid>. You can delete this database, or rename it, or just leave it. You have two choices, new database, or overwrite. To create a new one, right-click on Databases, and choose New Database. Give your database a name, or keep WSS_Content. I used WSS_Content_3. Leave all the defaults. Once it is created, or you want to overwrite the old one, right-click the database, and go to Tasks > Restore > Database. Choose From device, and choose your backed up file. Select the checkbox under Restore. Under the Options page, and check Overwrite the existing database. Leave all other defaults.
Step 6: Test Database and Copy Features/Assemblies
If you are using any added features or themes in SharePoint, these files will need to be copied manually. You first need to find out what is missing. Open up the SharePoint 2010 Management Shell. This is a PowerShell window with SharePoint cmdlets. Run the following:
Test-SPContentDatabase -Name DatabaseName -WebApplication http://DomainName/
This will generate a list (if no list is generated, you are golden, and can skip this next tedious part). During my upgrade, I was missing a long list of features, and several setup files and assemblies. Lets start with features. On your old server, there is a folder located here:
C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\FEATURES
You need to copy all of these files onto the new server in the same location, but with 14 as opposed to 12. Create the folder if it does not exist. Now all of these features need to be installed and activated. I’ve posted a script below that will allow you to run through all these without typing them manually. Open up a standard command box at C:\, and paste the following on the new server after you have copied the features (and having the path setup from above, is necessary for this). You will need to change domain to your domain, so copy it into Notepad first:
cd "\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\FEATURES"
for /f %i in ('dir /b *.*') do stsadm -o installfeature -name %i
for /f %i in ('dir /b *.*') do stsadm -o activatefeature -url http://DomainName/ -name %i
This will cycle through each feature, install it, and activate it. Go back to your PS window, and run the Test-SPContentDatabase again. Your list should be shorter now. If like me, you had assemblies, you will need to copy these from the old machine also. However, you can only access these through a command prompt. You can not get to them from Windows Explorer. Copy the folders out of C:\Windows\Assembly\GAC_MSIL and get them into the same folder on the new machine. There are several ways of doing this, and I will assume you know how to copy folders via command line. Only copy the ones you need, not everything. I don’t know what will happen if you overwrite files, but I can only assume the consequences will be less than desired. When running the Test-SPContentDatabase again, you should be cleared up. If not, you’ll need to do a bit of Googling and find out what you are missing. If you’d like a list of GUIDs for features to match up names, there is a great one here.
Step 7: Upgrade and Mount Database
Now that you have installed all the requirements, you are ready to upgrade the content database to allow it to work with 2010.
This is very simple, and takes a single command. From the Management Shell, run the following command: I removed the previous, because the second time around, it didn’t work correctly. I simply mounted the database, and it did the upgrade during the mount. You are now finally ready to connect the database to the site. To do this, run this command in the management shell:
Upgrade-SPContentDatabase -Name DatabaseName
You will be asked to confirm the upgrade. There is a possibility that it does not need to be upgraded, in which case, you are fine.
Mount-SPContentDatabase -AssignNewDatabaseId -Name DatabaseName -WebApplication http://DomainName/
This will output a new ID, and attach the content database to the site. You can now look at the site, and see your pages.
Step 8: Upgrade Views
Now, you may have noticed that your site looks the same, and does not have the new look to it. If you want to update the look (and I don’t know why you wouldn’t want to), run the following in the Management Shell, and it will update the main site, and all subsites.
$webapp = Get-SPWebApplication
foreach ($s in $webapp.sites)
You now have the new look.
Step 9: Cleanup
You have now successfully upgraded your Sharepoint server, however, you may still have some cleanup to do. If you have a large site, well, you may have a LOT of cleanup to do. First thing to note is that some custom features may not have copied all their data, and may not work at all. I was using a feature called Vacation Schedule, and it did not transfer. Thankfully, it was a little used feature, and I will be rebuilding it using a standard calendar with workflows. Another piece of cleanup you may need to do is modify links. Some of your links may be hardcoded for the old domain. You’ll have to hunt all of them down, and change them to the new domain. In my case, all of the permissions appeared to copy correctly for page rights, but your mileage may vary. It also appears that the Alert Me settings may have disappeared, so be sure to check that. You will also need to reapply any special customizations you may have done on the backend, and go through the Central Administration and setup things such as mail servers. You’ll need to browse around and find everything that is broken and fix them one at a time. I’ll leave that in your hands.
Step 10: Go Live
If you were following these steps to create a test server and have your users test the new environment (which you should be doing before blindly walking into an upgrade!), you will need to let your users know to test it out. Be sure to let them know that any changes they make will not affect the original database, but any alerts that were setup may still go out even though they are from the new server. If this is your new production server, you can go ahead and alert your users, and make any group policy changes you will need to make to point them to the new server URL. You can also shutdown the old server now just to keep them out of it.
I hope this helps you. I did several days of Google searching to come across all of this information, and did not find any one good tutorial. Of course, this tutorial may be incomplete. If your Sharepoint site is extremely complex, some of the above may not be useful, and you may have a lot more to do. But if your site is that complex, you probably know a bit more than me. To be honest, before I wrote this, I really only played with the backend of Sharepoint for about a week. I didn’t have any previous experience other than building a page or two. If something above is not working, or appears to be missing, please let me know, and I will update this how-to. Good luck!