SQL Server 链接服务器 PAGEIOLATCH_SH / CXPACKET

问题描述 投票:0回答:1

我有一个代理作业,它针对链接的 SQL 服务器运行一个非常简单的“从表中选择最大(日期)”。链接服务器是 AG 的一部分,来自远程的链接使用侦听器到达主服务器。大多数情况下,作业运行不会出现问题,但随着频率的增加,它会在 10 分钟时超时(默认远程连接超时)。如果失败,我可以直接在链接服务器上运行底层sql,它会在5秒内返回。这是我的活动监视器的屏幕截图,显示了从远程执行并挂起时链接服务器上的进程的样子; PAGEIOLATCH_SH 和 CXPACKET。当这种情况发生时,在本地运行“select”会产生预期的结果。我一生都找不到任何可行的解决方案,也找不到任何理由来解释为什么这件事一开始就失败了。任何帮助将不胜感激。

到目前为止,我已经查看了日志,但没有找到任何东西。将默认远程 cnxn 超时增加到 20 分钟降低了失败频率,但并未完全消除。可以证明,在本地运行时,表、数据库或服务器不会产生其他重大负载,会产生预期的亚分钟结果。

最后一次执行成功,尽管比预期的时间长...添加来自 Server1(执行源)的结果、统计信息等图像。

sql-server linked-server
1个回答
0
投票

有时我在不使用索引的链接服务器上进行查询时遇到了麻烦。也许如果你在本地执行 SQL 会做得更好?

SELECT MAX(date) FROM LINKED_SERVER.DatabaseName.dbo.Table

EXEC ('SELECT MAX(date) FROM DatabaseName.dbo.Table') AT LINKED_SERVER

为此,您的链接服务器必须将 RPC Out 属性设置为 true。

© www.soinside.com 2019 - 2024. All rights reserved.