SQL Server 2019删除数据库用户后反复出现外部库文件夹移除错误求助
解决SQL Server 2019删除用户后外部库文件夹清理错误0x80070003
这个错误里的0x80070003对应系统级的"找不到指定路径"问题,本质是SQL Server删除用户后,尝试清理对应数据库外部库文件夹里的关联文件时,找不到目标路径/文件,或者服务账户没有访问权限。按以下步骤排查解决:
先找到目标外部库文件夹的位置
启用过R/Python外部脚本的数据库,外部库默认存在SQL Server数据目录下的ExternalLibraries文件夹里,每个数据库对应一个以数据库ID命名的子文件夹。执行下面的SQL查询获取你报错的数据库对应的路径:SELECT db.name, db.database_id, 'ExternalLibraries路径: ' + CONVERT(VARCHAR(255), SERVERPROPERTY('InstanceDefaultDataPath')) + 'ExternalLibraries\' + CONVERT(VARCHAR(10), db.database_id) FROM sys.databases db WHERE db.name = '你的数据库名'; -- 替换成报错里的数据库名称手动清理残留文件
- 先停止SQL Server服务(防止文件被进程占用删不掉)
- 打开查询到的外部库文件夹,找到和被删除用户相关的子文件夹/文件(一般是用户ID命名),直接删掉这些残留项
- 重启SQL Server服务
检查SQL Server服务账户的权限
要是路径存在但还是报错,大概率是服务账户没权限访问这个文件夹:- 右键
ExternalLibraries文件夹 → 属性 → 安全选项卡 - 添加SQL Server的服务账户(通常是
NT SERVICE\MSSQLSERVER,如果是自定义账户就加对应的账户名) - 给这个账户分配完全控制权限,应用后确认
- 右键
修复残留的元数据
如果文件已经删了,但错误日志还在报,可能是系统元数据没同步:-- 先禁用外部脚本功能 sp_configure 'external scripts enabled', 0; RECONFIGURE; -- 再重新启用 sp_configure 'external scripts enabled', 1; RECONFIGURE;执行完这两句后,重启SQL Server服务,让元数据重新同步
验证结果
重启服务后观察一段时间,查看SQL Server错误日志,确认这个报错是否不再出现
内容的提问来源于stack exchange,提问作者Sai Prabhu
相关产品推荐
相关产品推荐

