症状

如果将使用 Microsoft SQL Server Service Broker 的应用程序配置为对每个对话中的一条消息使用消息模式,则会发现 tempdb 数据文件出现意外增长。 此模式类似于审核应用程序中通常使用的 "火灾和忘掉" 模式。如果在出现此问题时查询 sys.dm_db_task_space_usage 动态管理视图(DMV),则你可能会看到 "internal_objects_dealloc_page_count" 值不会以与运行内部 Service Broker 任务的会话 id 的 "internal_objects_alloc_page_count" 相同的速率增加。此外,即使关闭并清理了所有挂起的对话,也不会释放 tempdb 空间。

原因

数据文件的增长主要由sysdesend 表的常量插入和更新引起。 在这种情况下,当你使用 Service Broker 时, tempdb 数据文件将继续增长。

解决方案

此问题已在 MICROSOFT SQL Server 2016中修复。

累积更新信息

Sql server 2012 的累积更新 5 Service Pack 3 (SP3) 累积更新10(适用于 sql server 2014 SP1)累积更新 3 sql server 2014 SP2

SQL Server 的每个新的累积更新均包含以前的累积更新中包含的所有修补程序和所有安全修补程序。 查看 SQL server 的最新累积更新: sql server2012 SP3 的最新累积更新SQL server 2014 SP1/SP2 的累积更新

更多信息

若要从 tempdb回收 unreleased 空间,请重新启动 SQL Server 服务。若要避免此问题,请按照以下 TechNet 主题的 "性能和可伸缩性技术" 部分中的常规建议进行操作:

Service Broker:性能和可伸缩性技术

状态

Microsoft 确认这是当前的 Service Broker 设计中的已知问题。

需要更多帮助?

扩展你的技能
了解培训
抢先获得新功能
加入 Microsoft 内部人员

此信息是否有帮助?

你对翻译质量的满意程度如何?

哪些因素影响了你的体验?

是否还有其他反馈?(可选)

谢谢您的反馈意见!

×