【问题标题】:Resource limit on SQL Server Linked ServerSQL Server 链接服务器的资源限制
【发布时间】:2020-08-20 23:26:24
【问题描述】:

我经常收到关于使用 openquery 通过链接服务器读取的存储过程的错误。

链接服务器“BrackleyICS”的 OLE DB 提供程序“SQLNCLI11” 报告了一个错误。执行由提供程序终止,因为 已达到资源限制。

这通常发生在 10.01 分钟。这意味着超时设置,但在其他情况下,它会运行良好,需要 35 分钟才能完成。

有人遇到过吗?

【问题讨论】:

  • 可能登录超时一次,其他时间没有,这可能会有所帮助:support.microsoft.com/en-ie/help/314530/…
  • 取自上述链接,默认情况下,在 Microsoft SQL Server 7.0 中,超时设置为零(0 - 无限等待)。默认情况下,在 SQL Server 2000 和 SQL Server 2005 中,超时设置为 600(10 分钟)。
  • 你解决过这个问题吗?我已经断断续续地经历了大约 2 年,但我从未确定原因。

标签: sql sql-server linked-server


【解决方案1】:

您可以通过以下方式检查当前的超时设置:

查询超时

右键服务器>属性>连接>远程查询超时

登录超时

右击服务器>属性>高级>远程登录超时

我认为您的登录超时设置为 10 分钟,您需要通过运行以下脚本来增加此值,将值从 30 秒更改为所需的时间

sp_configure 'remote login timeout', 30
go 
reconfigure with override 
go 

每次都不超时的原因: 不确定,但如果用户 ID 登录到服务器,则不会发生超时。

【讨论】:

  • 我确实认为这与此有关,我只是对为什么有时会超时而有时不会超时感到困惑。所以服务器 A 使用 OpenQuery 连接到服务器 B,有时会超时,有时不会。服务器 A 也使用 OpenQuery 连接到服务器 C,这永远不会超时,但需要更长的时间。
  • @Jay1b,比较服务器 B 和服务器 C 的设置,也许你会发现一些差异
  • 没有明显的设置差异会影响这一点。不用说 SQL Server 是如此庞大,我不能说所有的设置都是一样的。将此超时从 600 更改为 300 确实意味着它按预期在 5 分钟时超时。我正在尝试将这个设置为一小时 (3600) 运行几次,但当它偶尔工作时更难确认成功。
  • @PawelCzapski 我有服务器 A 通过 OpenQuery 从服务器 B 查询数据,我应该在上面的设置中更新哪个服务器?
【解决方案2】:

链接服务器在链接服务器->属性->服务器选项中也有自己的查询超时设置。很可能它设置为 0 - 这是默认值。

在这种情况下,它使用 Query Wait 高级服务器设置 - 很可能再次设置为 -1(默认)。

在这种情况下,超时由每个查询决定,计算为估计查询成本的 25 倍。

更多信息MSDN

【讨论】:

    【解决方案3】:

    EXEC sys.sp_configure N'remote query timeout (s)', N'1800' GO RECONFIGURE WITH OVERRIDE GO

    默认值为 600 秒,等于 10 分钟

    【讨论】:

    • 请提供更多关于答案的细节,不要只是粘贴代码块。
    猜你喜欢
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2020-03-24
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    相关资源
    最近更新 更多