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

SQL Server随机出现“No process is on the other end of the pipe”错误求助

解决SQL Server执行存储过程时随机出现的Msg 233传输级错误

根据你描述的场景,这个随机出现的传输级错误(Msg 233, Level 20, State 0)其实是资源池内存不足引发的连锁反应——当default资源池内存耗尽时,SQL Server的进程通信会出现异常,才抛出了Shared Memory Provider相关的管道错误。结合你的环境(本地SQL Server 2017、内存优化表、Resource Governor启用),给你几个针对性的解决方向:

1. 调整Resource Governor的资源池内存配额

首先要确认default资源池的内存限制是否过于苛刻:

  • 执行以下查询查看当前配置:
    SELECT name, max_memory_percent, used_memory_kb 
    FROM sys.resource_governor_resource_pools 
    WHERE name = 'default';
    
  • 如果max_memory_percent设置过低(比如低于服务器可用内存的60%),可以调高这个值,比如设置为服务器内存的70%(根据你的实际服务器内存调整):
    ALTER RESOURCE POOL [default] WITH (MAX_MEMORY_PERCENT = 70);
    ALTER RESOURCE GOVERNOR RECONFIGURE;
    
    注意:如果你的内存优化表是绑定到自定义资源池的,也要同步调整对应池的内存配额。

2. 优化内存优化表的内存占用

内存优化表完全依赖内存存储,是内存消耗的核心,你可以从这几点入手:

  • 查看内存优化表的内存使用明细,定位消耗大户:
    SELECT 
        OBJECT_NAME(object_id) AS table_name,
        memory_used_kb / 1024 AS memory_used_mb
    FROM sys.dm_db_xtp_memory_consumers 
    WHERE database_id = DB_ID('MyDatabase');
    
  • 归档历史数据:把不常用的历史数据迁移到普通磁盘表,减少内存优化表的数据量。
  • 精简索引:每个非聚集索引都会占用额外内存,删除不必要的索引,只保留业务必需的。

3. 调整SQL Server整体内存配置

确保SQL Server本身有足够的内存可用,避免OS和其他进程抢占:

  • 查看当前最大服务器内存设置:
    sp_configure 'max server memory (MB)';
    
  • 如果设置过低,调高这个值(比如服务器总内存是32G,可以设置为24G,留8G给OS):
    sp_configure 'show advanced options', 1;
    RECONFIGURE;
    sp_configure 'max server memory (MB)', 24576;
    RECONFIGURE;
    

4. 优化存储过程的执行逻辑

存储过程的运行可能触发内存峰值,导致资源池耗尽:

  • 分批处理数据:如果存储过程需要一次性插入/更新大量数据到内存优化表,改成批量分批操作,降低内存瞬时占用。
  • 缩短事务时长:长时间运行的事务会持有内存资源无法释放,检查存储过程中的事务逻辑,尽量缩短事务周期。

总结

这个错误的本质是内存资源瓶颈导致的进程通信异常,只要解决了default资源池的内存不足问题,传输级错误会自然消失。你可以先从调整资源池内存配额开始,再逐步优化内存使用和执行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 09:02:48