SharePoint 2013 已经迫近眼前,提新的基于 SharePoint 的方案时,已经不能不考虑和解释与 2013 有关的内容了。
在这些需要考虑和解释的部分里面,沙盒解决方案的去留是我最关心的。因为新的 App 开发模型的出现,沙盒解决方案将不再被推荐使用,这种说法应该是来自 Apps for SharePoint compared with SharePoint solutions,引起部分人(包括我)的一点点小担心。
翻看了大量的资料以后,我感觉目前已经有和在开发的使用沙盒方案的 SharePoint 2010 网站应该能够在 2013 中顺利运行。为了检验这个判断,Jony 按照官方的文档和网上其他人的文章,做了这个简单的升级实验。
环境
SharePoint 2010 是 3 台虚拟机:域控、数据库、SharePoint;SharePoint 2013 是 2 台虚拟机:域控+数据库(不推荐这么部署,我是没办法)、SharePoint。
计划
参考 Manage site collection upgrades to SharePoint 2013 和 Upgrading from SharePoint 2010 to SharePoint 2013 Step by Step 这两篇文章。
SharePoint 2010
- 备份网站集数据库
- 备份沙盒方案 wsp 文件
SharePoint 2013
- 还原网站集数据库备份
- 新建网站应用程序
- 测试网站集数据库备份
- 挂载网站集数据库备份
- 部署沙盒方案 wsp 文件
- 将网站集升级到 2013
就像把大象塞进冰箱一样,哈。
执行
SharePoint 2010
备份数据库,简单的操作“任务—>备份”:
备份沙盒方案,更简单,拷贝文件 wsp 即可。
(如果有服务器场解决方案,也需要备份,并在 SharePoint 2013 中还原。)
SharePoint 2013
还原数据库备份,这里遇到点儿小麻烦。
数据库引擎用的 SQL Server 2012,按照习惯,直接先在图形界面 restore,结果
好吧,我对 SQL Server 2012 不熟悉,应该也不会是我使用试用版的原因, 不想在这个上面折腾时间,就直接用 sql 还原了:
接下来,在 SharePoint 2013 里面新建一个网站应用程序,默认设置即可(端口与原来网站一样)。这里,不知道你会不会个疑问:新建网站应用程序的时候,会建立一个默认的内容数据库,升级 SharePoint 2010 内容数据库进去以后,这 2 个内容数据库会是什么关系呢?答案后面揭晓。
网站应用程序建好以后,先不要建网站集。打开 SharePoint Powershell,打几个命令进去测试挂载 SharePoint 2010 的内容数据库。
测试:Test-SPContentDatabase
虽然有很多“Error”,但是,所有的“UpgradeBlocking”都是“False”,好了,我心里有数了 :)
挂载:Mount-SPContentDatabase
100% 完成但是有错误。打开 log 看看:
看似是因为部分 Feature missing,原来的 SharePoint 2010 的网站集就是从空白开始的,而且里面全部是沙盒方案和 jQuery 之类的库,所以,我估计这些 Feature 是不同 SharePoint 版本之间的误解造成的,升级后应该就可以转换到新版本了。
下面,进去网站应用程序地址看看导入的效果:
看上去不错,报 Web Part Error 的原因是:沙盒服务没有开启。好吧,去 CA:
回来,再试试:
好了,图表出来了 :)
再看看 Solution Gallery,试试更新沙盒方案:
OK,完全没问题。
最后,点击顶部的提示,试试升级到 2013(升级前,我们仍然运行在 SharePoint 2010 的模式下,SharePoint 2013 提供这种兼容性)。
升级成功,也完全没有问题。呵呵,终于放心了。
下面回头回答问题:新建网站应用程序时,那个默认的内容数据库会怎么样呢?
下面以 “_15”后缀的,就是默认的内容数据库,里面没有网站集,也就是说,挂载数据库后,用的是我们挂载的那个。默认那个,现在就可以直接删掉了。
结论
如果是带沙盒方案(含 jQuery 等客户端库文件)的升级,从 SharePoint 2010 到 SharePoint 2013 应该是没有问题的,完全兼容。可以放心了。