在企业级SharePoint部署中,开发者通常在一个环境(如开发环境)中开发应用程序,然后将应用程序迁移到全新的SharePoint农场(如暂存或生产环境)。本文将介绍如何将SharePoint 2010站点集合从一个版本的SharePoint农场迁移到升级版本的SharePoint农场。
众所周知,stsadm提供了许多SharePoint方法,其中之一就是备份SharePoint站点集合的能力:
stsadm –o backup –filename <filename> -url <sitecollurl>
然后可以将其恢复:
stsadm –o restore –filename <filename> -url <pre created empty sitecollurl> -overwrite
到任何其他SharePoint 2010农场。然而,当尝试将SharePoint 2010站点集合恢复到稍微升级的SharePoint农场时,stsadm会抛出一个恢复错误,提示:
“备份来自不同版本的Microsoft SharePoint基础架构,无法恢复到当前版本运行的服务器。”
这时,可能会感到困惑,不知道接下来该怎么办。
虽然有很多文章解释了这个问题的解决方法,但没有一篇详细或完整地解释。本文旨在详细解释解决方案。解决方案显然是SQL Server备份恢复,或者更确切地说是分离附加SQL数据库,而不是stsadm备份恢复。(在本文中,将后者方法称为“SQL Server备份恢复”)。但这还没有结束,为了确保站点集合正确恢复和升级,需要进一步执行PowerShell升级命令。
转到中央管理;找出站点集合存储的内容数据库。它通常位于应用程序管理下:
站点集合 --> 查看所有站点集合
在此页面上,选择站点集合所在的Web应用程序,然后点击左侧的站点集合URL。右侧的表格应该有内容数据库名称,其中存储了站点集合数据。
登录到SQL Server Management Studio;从数据库列表中找出内容数据库名称。从SQL Server Management Studio备份向导中获取内容数据库备份。
将内容数据库恢复到作为升级版SharePoint农场数据库服务器的SQL Server。确保SQL数据库对于旧版和升级版的SharePoint都是同一版本;例如,不能将SQL Server 2008数据库备份文件恢复到SQL Server 2008 R2上。
现在登录到升级版SharePoint农场的中央管理,为想要的站点集合所在的Web应用程序创建一个新的内容数据库(应用程序管理下:
数据库 --> 管理内容数据库 --> 点击添加内容数据库
确保选择的Web应用程序没有与尝试恢复的站点集合相同的URL的站点集合。将内容数据库命名为与恢复SQL Server备份时相同的名称。
然后,新站点集合应该可以在Web应用程序中浏览了。
可能可以正常浏览站点集合,但如果仔细观察,站点集合只是恢复了,还没有升级。要验证这一点,请转到中央管理-->升级和迁移下:
升级和补丁管理 --> 点击审查数据库状态
在这里,如果指向新恢复的内容数据库,会发现一个消息说:
“数据库在兼容性范围内,建议升级”。
因此,如果再次尝试使用stsadm备份恢复此站点集合,在同一个升级版的SharePoint农场中,将得到与之前相同的错误。
Upgrade-SPContentDatabase –Identity <name_of_contentDB>
一旦此命令执行完毕,站点集合现在就是一个完全恢复和升级的站点集合了。
简而言之,本文可以通过简要比较stsadm备份恢复方式和SQL Server备份恢复方式来总结。
stsadm | SQL Server(如上文所述) |
---|---|
允许在Web应用程序的任何URL位置恢复站点集合(在显式路径如Web应用程序的根或通配符路径如“/sites/SiteCollection”)。 | 在Web应用程序中恢复站点集合的确切URL,与备份时的URL相同。 |
此方法的粒度级别为顶级站点或站点集合级别。 | 此方法的粒度级别为内容数据库,因此所有内容数据库中的站点集合都通过这种方法传输。 |
通过这种方法恢复站点集合不需要在目标SharePoint农场中创建新的内容数据库。 | 这强制要求在目标农场中创建新的内容数据库。 |
与SQL Server备份生成的文件相比,备份文件通常很小。作为一个简单的比较,stsadm备份站点集合的文件重294 KB,而内容数据库(只包含一个站点集合)的备份文件通常是23 MB。 | 生成的备份文件很大。 |
不需要访问数据库服务器或SQL Server Management Studio来连接它。 | 需要对数据库服务器的权限以及SQL Server Management Studio来连接它。 |
服务器 --> 管理农场中的服务器。在农场信息下找到农场版本,标题为Farm database version。