处理SSAS中City维度时持续出现「系统连接设备无法正常运行」错误求助
问题:SSAS处理「City」维度时提示「系统连接的设备无法正常运行」
环境配置
- SQL Server Management Studio(SSMS)18:管理Wide World Importers(WWI)数据库
- Visual Studio 2019:用于SSAS项目,通过SQL Server Native Client 11.0连接
- Analysis Services:配置多维、表格两个实例,使用权限完备的服务账户
- 数据库:Wide World Importers
- 操作系统:Windows 11
问题详情
- 仅处理「City」维度时触发错误,项目部署成功,但处理首个维度就弹出错误:
A device attached to the system is not functioning.(系统连接的设备无法正常运行。) - 系统无硬件故障提示,CPU、磁盘、内存等资源无明显限制
已尝试排查步骤
- 确认服务账户权限无异常
- 验证SQL Server资源配置充足、网络设置正确
- 调整SQL Server Native Client和OLE DB提供程序的兼容性设置
成因分析
这个错误在SSAS场景下并非真的指向硬件设备故障,常见触发原因包括:
- 数据源连接兼容性冲突:SQL Server Native Client 11.0与Windows 11或高版本SSAS存在适配问题,处理含特殊数据的维度表时易触发异常。
- 维度底层数据异常:「City」维度对应的数据表可能存在损坏值(特殊字符、超长字符串、NULL值处理逻辑冲突),导致SSAS读取转换数据时触发系统误判。
- SSAS实例配置不合理:多维实例的内存分配、并行处理设置不当,导致维度处理时资源调度异常,抛出模糊的设备错误提示。
- 临时目录权限缺失:SSAS服务账户对维度处理生成临时文件的目录无读写权限,导致操作失败。
解决方案
针对上述成因,可按以下步骤逐一排查解决:
- 更换数据源连接提供程序
- 在Visual Studio的SSAS项目中,将数据源连接提供程序从
SQL Server Native Client 11.0更换为Microsoft OLE DB Driver for SQL Server(最新版)或ODBC Driver 17 for SQL Server,重新部署后尝试处理维度。
- 在Visual Studio的SSAS项目中,将数据源连接提供程序从
- 检查并修复维度数据源
- 在SSMS中执行以下语句排查「City」表的异常数据:
SELECT * FROM [Wide World Importers].[Application].[Cities] WHERE CityName LIKE '%[^a-zA-Z0-9 ,.-]%' OR LEN(CityName) > 255; - 清理或修复含特殊字符、超长值的记录,确保数据格式符合SSAS维度要求。
- 在SSMS中执行以下语句排查「City」表的异常数据:
- 调整SSAS实例配置
- 打开SSMS连接到SSAS多维实例,右键实例选择「属性」:
- 在「内存」选项中,将「总内存限制」设为物理内存的70%左右,禁用「低内存时取消查询」;
- 在「处理」选项中,将「并行处理线程数」设置为与CPU核心数匹配的值,避免资源竞争。
- 打开SSMS连接到SSAS多维实例,右键实例选择「属性」:
- 验证临时目录权限
- 找到SSAS实例的临时文件目录(路径通常为
C:\Program Files\Microsoft SQL Server\MSAS<版本号>.<实例名>\OLAP\Temp); - 确保SSAS服务账户对该目录拥有完全控制权限,添加权限后重启SSAS服务。
- 找到SSAS实例的临时文件目录(路径通常为
- 手动处理维度验证
- 在SSMS中直接连接SSAS实例,找到「City」维度右键选择「处理」→「处理全部」,若成功则说明问题出在Visual Studio部署流程,可清理项目缓存(删除
.vs目录)后重新部署。
- 在SSMS中直接连接SSAS实例,找到「City」维度右键选择「处理」→「处理全部」,若成功则说明问题出在Visual Studio部署流程,可清理项目缓存(删除
内容的提问来源于stack exchange,提问作者Kevin Cianci
相关产品推荐
相关产品推荐

