误删SharePoint 2013列表含数据列且无备份,如何完整恢复?
别急,我来帮你梳理几种可能恢复的方法——虽然你没手动备份,但SharePoint自带的一些机制说不定能派上用场:
1. 检查两层回收站
SharePoint的回收站有两级缓存,先从最基础的开始排查:
- 站点级回收站:打开你的站点,点击右上角设置菜单里的“回收站”,找被删除的列条目。删除列时,对应的数据会被标记为删除,通常会先存放在这里,还原后就能找回列和数据。
- 站点集级回收站:如果站点回收站里找不到,就得找站点集管理员帮忙,在站点集设置里进入这个回收站——这里会保存从站点回收站彻底删除的项目,你的列可能还在这里躺着。
2. 利用列表版本历史(如果开启过)
要是你之前给这个列表开了版本历史记录,那这事就简单多了:
- 进入列表设置,找到“版本设置”确认功能开启状态;
- 回到列表页面,点击上方的“版本历史”,找到删除列之前的版本,直接恢复整个列表到那个版本,就能完整找回列和对应的数据。
- 小提示:版本历史默认可能没开启,但只要列表曾经有过版本记录,这个方法就有效。
3. 用PowerShell命令恢复(需服务器场权限)
如果你有服务器场管理员权限,可以试试用PowerShell捞回被删除的字段:
- 以管理员身份打开SharePoint Management Shell;
- 先定位到目标网站和列表:
$web = Get-SPWeb "http://你的站点URL" $list = $web.Lists["你的列表名称"] - 查看被删除的字段集合(SharePoint会暂时保留删除的字段在
DeletedFields里):$list.DeletedFields | Select-Object Title, InternalName - 找到目标字段后执行恢复:
$fieldToRestore = $list.DeletedFields | Where-Object { $_.Title -eq "你要恢复的列名" } $fieldToRestore.Restore() $list.Update()
- 注意:这个方法只在字段被删除的时间不太长时有效(默认保留30天,具体看农场配置),而且必须有服务器场管理员权限。
4. SQL数据库层面恢复(谨慎操作!)
这是最后的救命稻草,风险极高,务必先咨询你的DBA,并且在测试环境验证后再碰生产环境:
- SharePoint的内容数据库会存储列表和字段数据,如果你的SQL服务器有自动备份(比如事务日志备份、全量备份),可以先恢复到测试环境,导出需要的数据后再导入到生产站点。
- 绝对禁止直接修改生产环境的内容数据库,很容易搞崩整个SharePoint农场。
最后提醒
如果以上方法都试过还是找不回,那数据可能真的无法恢复了。以后记得给重要列表开启版本历史,定期做站点或列表备份,避免再踩这种坑。
内容的提问来源于stack exchange,提问作者Shradha
相关产品推荐
相关产品推荐

