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.