You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server 2022 PolyBase数据移动服务启动失败求助

SQL Server 2022 PolyBase Data Movement服务启动失败问题排查

问题详情

  • 环境:SQL Server 2022 Developer版本,计划通过PolyBase连接MongoDB
  • 现象:PolyBase Data Movement服务启动后数秒自动停止
  • 核心日志错误:
13/05/2024 14:52:53 [Thread:7800] [GeneralInstrumentation:ThreadErrorEvent] (Error, High):
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at Microsoft.SqlServer.DataWarehouse.DataMovement.SharedMemory.SmNative.SmCreateEx(Boolean xdeployMode, String sharedMemoryName, String ipcPrefixName, UInt32 buffersPerCQScan, UInt32 bufferSize, UInt32 regionCount, String nodeName, UInt32 nodeNameLength, Boolean useSecurityGroupForAcl, Boolean requireLocalMachineGroupForAcl, Boolean requireOrderedBuffers, IntPtr& sharedMemoryHandle)
at Microsoft.SqlServer.DataWarehouse.DataMovement.SharedMemory.NativeSharedMemory.Create(String sharedMemoryName, String ipcPrefixName, UInt32 buffersPerCQScan, UInt32 bufferSize, UInt32 regionCount, String nodeName, UInt32 nodeNameLength)
at Microsoft.SqlServer.DataWarehouse.DataMovement.CommandManager.DetachSqlServerAndCreateSharedMemory()
at Microsoft.SqlServer.DataWarehouse.DataMovement.CommandManager.ProcessInitConfigMessage(IMessage message)
at Microsoft.SqlServer.DataWarehouse.DataMovement.CommandManager.ProcessBaseMessage(IBaseMessage message)
at Microsoft.SqlServer.DataWarehouse.DataMovement.CommandManager.Run()
at Microsoft.SqlServer.DataWarehouse.Common.ThreadManager.ThreadFactory.ExecuteCallback(Delegate callback, Object state, Boolean throwException, String name)
at Microsoft.SqlServer.DataWarehouse.Common.ThreadManager.ThreadFactory.<>c__DisplayClass15_0.<OnCreateThread>b__0(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart(Object obj)
  • 事件查看器提示:账户'PdwComputeNodeAccess'存在于域(MYDOMAINNAME)而非本地机器
  • 已尝试操作:重新安装SQL Server、确认I_certSignPolyBaseAuthorize和I_certSignSmDetach为sysadmin角色、启用TCP/IP,问题未解决

解决建议

1. 修复PdwComputeNodeAccess本地组

  • 打开计算机管理 -> 本地用户和组 -> 组,检查是否存在PdwComputeNodeAccess本地组。若不存在,手动创建该组
  • 将PolyBase相关服务账户添加到该组:默认服务账户为NT SERVICE\PolyBaseEngine和NT SERVICE\PolyBaseDataMovement,确保这两个账户已加入PdwComputeNodeAccess本地组
  • 若域中存在同名账户,优先使用本地组:可在服务属性中指定本地系统账户运行PolyBase服务,避免域账户干扰

2. 重置PolyBase服务权限与共享内存配置

  • 以管理员身份打开命令提示符,运行以下命令重置PolyBase Data Movement服务权限:
sc sdset PolyBaseDataMovement D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)
  • 执行SQL查询验证PolyBase配置:
SELECT name, value, description FROM sys.configurations WHERE name LIKE '%polybase%'

确保polybase enabled的值为1,若测试可暂时将polybase network encryption设为0

3. 系统组件与更新检查

  • 安装SQL Server 2022最新累积更新:修复官方已知的PolyBase共享内存访问违规BUG
  • 验证.NET Framework版本:确保系统安装了.NET Framework 4.8或更高版本
  • 检查系统内存:避免因内存不足导致的内存访问异常,暂时关闭其他占用内存较高的程序后重试启动服务

内容的提问来源于stack exchange,提问作者Kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 08:25:12