Microsoft SQL Server 2012镜像断开连接


8

我有一些Microsoft SQL Server 2012镜像,没有见证人处于异步模式,这些镜像偶尔会断开连接。我正在运行SQL Server 2012 11.0.5058。看着镜子那边的原木,我看到了

无法分配BUF:FAIL_BUFFER_ALLOCATION 1

有一堆记忆库消息

错误:802,严重性:17,状态:0。

缓冲池中没有足够的可用内存。

错误:1454,严重性:16,状态:1。

数据库镜像将被挂起。服务器实例“实例”在充当数据库“数据库”的镜像伙伴时遇到错误802,状态0,严重性17。数据库镜像伙伴可能会尝试从错误中自动恢复并恢复镜像会话。有关更多信息,请查看错误日志以获取其他错误消息。

任何有助于检查镜后为什么挂起然后断开连接的帮助都将受到赞赏。在此之后,我可以重新建立镜像,它们可以正常工作几天,然后再次发生。


最大内存设置为多少?您还会使用Service Broker吗?
— 金莎(Kin Shah)2015年

在镜像和主磁盘上,为2147483647 MB​​。不使用Service Broker。
— John Wesley Gordon

2
好的..多数民众赞成一件事,使它成为非默认值-否则,SQL Server将耗尽操作系统中所有的内存不足。您可以将其设置为合理的值吗?作为一个很好的起点,您可以使用此参考。另外,您可以重新检查您的SQL Server版本11.0.5048听起来不正确吗?
— Kin Shah 2015年

错字,那是11.0.5058
— 约翰·韦斯利·戈登

1
那么SP2 RTM已有一年半的历史了-您是否考虑过升级到SP3(以及可选的CU1)?不知道它是否可以解决您的问题,但其中还有许多其他修复可能是值得的。
— 阿龙贝特朗

Answers:


1

在我之前的公司中,我遇到了非常相似的问题。数据库镜像被定期挂起,并且出现与您相同的错误。镜像永远不会自行重新连接,但是通常我可以使用以下方法恢复它:

ALTER DATABASE <Database Name> SET PARTNER RESUME

几周后,我们发现即使服务器上有足够的内存,并且为实例分配了足够的内存,我们的工作负载也非常不均匀地分布,有时会使用100%的内存。由于大多数时候我们都有足够的内存,所以我们无权购买更多的内存。我最终增加了缓冲池扩展文件,并将其放置在恰好有足够空间容纳它的SSD之一上。镜像问题再也没有回来。我不能保证同样适用于您,我主要是分享我的经验。


0

提出并开始故障排除的几个问题
1.您要镜像多少个数据库
2. sql服务器可以使用多少RAM
3.镜像的数据库大小是 多少

以下是启用镜像时对镜像要求的粗略估计

在Prinicipal上:
每个数据库4 MB用于DBM发送缓冲区,外加4 MB用于日志写缓冲区

在镜像上:
1 MB用于日志写缓冲区,1 MB用于日志REDO缓冲区

您还可以检查镜像实例上每个数据库的内存消耗,以查看哪个数据库是瓶颈,然后开始进行故障排除

每个数据库的内存利用率-SQL Server


我有3个数据库正在镜像。主服务器具有16 GB的内存,镜像服务器具有20 GB的内存。现在,镜像上最大的内存使用情况是镜像的3.8 MB。镜像数据库具有其自己的主数据库。最大的主数据库为9301 MB。镜像服务器上所有数据库的总数为9593.75 MB。这似乎没有接近20 GB的标记。主数据库甚至更少,仅占用6765 MB。
— 约翰·韦斯利·戈登
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.