SharePoint 2016上传文件遇禁用AD用户签出提示但文件不存在的解决咨询
方法1:PowerShell强制撤销签出
打开SharePoint Management Shell,执行以下命令(替换占位符为实际环境信息):
# 加载SharePoint PowerShell模块 Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue # 定义核心参数 $siteUrl = "https://你的网站集URL" $libraryName = "目标文档库名称" $fileName = "Risk Management.docx" $targetUser = "i:0#.w|domain/username" # 获取网站与文档库对象 $site = Get-SPSite $siteUrl $web = $site.OpenWeb() $list = $web.Lists[$libraryName] # 尝试查找文件并撤销签出 $file = $list.Items | Where-Object { $_.Name -eq $fileName } if ($file -ne $null) { $file.UndoCheckOut() $file.Update() Write-Host "已成功撤销文件签出" } else { # 直接查找孤立签出记录 $checkoutRecords = $web.Site.CheckOutStatus | Where-Object { $_.FileUrl -match $fileName -and $_.CheckedOutByUser.LoginName -eq $targetUser } foreach ($record in $checkoutRecords) { $record.UndoCheckOut() Write-Host "已清除孤立的签出记录" } } # 释放资源 $web.Dispose() $site.Dispose()
方法2:清除SharePoint服务器端缓存
- 停止以下服务:
- SharePoint Timer Service
- SharePoint Server Search 16
- World Wide Web Publishing Service
- 删除指定缓存文件:
- 配置缓存:删除
C:\ProgramData\Microsoft\SharePoint\Config\<随机GUID>目录下的所有.xml文件(保留文件夹) - Blob缓存:删除Web应用程序配置中指定的Blob缓存目录内的文件
- 配置缓存:删除
- 重启上述停止的服务,等待10-15分钟让缓存重新生成
方法3:清理内容数据库中的孤立签出记录
注意:操作数据库前必须完整备份目标内容数据库,仅在测试环境验证后再执行生产环境操作
- 打开SQL Server Management Studio,连接到SharePoint数据库实例
- 选择目标内容数据库,执行查询定位孤立记录:
SELECT d.* FROM Docs d JOIN UserInfo u ON d.CheckoutUserId = u.tp_ID WHERE u.tp_Login = 'i:0#.w|domain/username' AND d.LeafName = 'Risk Management.docx'
- 若找到对应记录,执行删除操作:
DELETE d FROM Docs d JOIN UserInfo u ON d.CheckoutUserId = u.tp_ID WHERE u.tp_Login = 'i:0#.w|domain/username' AND d.LeafName = 'Risk Management.docx'
- 执行
iisreset重置IIS服务
方法4:检查回收站与版本历史
- 检查文档库的一级回收站和网站集二级回收站,确认文件是否被删除后仍残留签出标记
- 若文件曾存在,查看文档库的版本历史,尝试恢复历史版本后再撤销签出
内容的提问来源于stack exchange,提问作者Finn
相关产品推荐
相关产品推荐

