由于未知的网络错误 59,完全备份到网络失败

SQL*_*ert 5 sql-server backup network sql-server-2012 ola-hallengren

我最近看到未知 Netowrk 错误 59,它将完整备份保存到某些服务器上的文件共享。备份发生在不同的时间。

目前使用的是Ola Halengren脚本,使用的sql server版本为2012、2014企业版。

我看到有人建议在 HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters 中创建名称为“Sesstimeout”且值为 360 的 DWORD。

我的问题是我们应该在目标服务器(文件共享)还是 sql server 所在的服务器上创建它

Aar*_*and 5

如果您遇到网络可靠性问题:

  1. 与您的网络/SAN 团队联系(和/或使用未出现问题的其他文件共享)
  2. 假设有足够的空间,将文件临时备份到本地 SQL Server 系统。然后将备份复制到网络共享,通常使用可以恢复中断传输的工具,并在确认复制后删除原始备份(通常包括验证备份是否可以恢复)。如果复制失败,没什么大不了的;你只是重新开始复制​​,你没有丢失任何东西。

我同意 Max 的观点,这似乎不是改变会话超时可以解决的问题;这有点像在车灯熄灭时更换轮胎。您可能为下一个坑洼做好了更好的准备,但您仍然只用一盏灯开车。


Han*_*non 5

Aaron 的回答为如何解决这个问题提供了很好的建议。我想我会添加一个答案以提供更多技术细节。

根据Microsoft 的 err.exe 实用程序,错误 59 在 winerror.h 中定义为:An unexpected network error occurred.

如果这是会话超时的问题,您几乎肯定会看到STATUS_NETWORK_SESSION_EXPIRED错误 0xC000035C / -1073740964。 Microsoft Docs声明对此的解决方案是:

客户端的会话已过期;因此,客户端必须重新进行身份验证才能继续访问远程资源。

您在问题中提到的注册表值HKLM\SYSTEM\CurrentControlSet\Services\lanmanworkstation\parameters与“lanmanworkstation”Windows 服务有关,通过服务控制面板小程序也简称为“Workstation”。该服务是在工作站端启动网络连接的服务。因此,如果您需要修改该注册表值,则应在客户端(在本例中为 SQL Server 计算机)进行修改。 该注册表值的Microsoft Docs

确定用于计算未完成操作的超时值的辅助延迟的持续时间。如果重定向器在结果超时到期之前没有收到对未完成操作的响应,则它认为该操作已失败。SessTimeout 条目的值可以被认为是错误的余量。如果出现意外延迟,重定向程序将允许此额外时间完成操作。

重定向程序将此项的值添加到服务器消息块 (SMB) 的预期响应时间。结果超时是动态计算的,它大约等于:

[(SMB 大小 + 发送或接收的数据大小)/每秒字节数] + SessTimeout。

此设置的默认值为 45 秒,可以在 10 到 65535 秒的范围内修改。