我的 SQL 代理作业每天早上 4 点运行。 它有 10 个步骤。
在过去的几周里,它每周在步骤3上失败几次,并出现此错误。
链接服务器"远程服务器名称"的 OLE DB 提供程序"SQLNCLI11" 报告了错误。
执行被提供程序终止,因为 已达到资源限制。[SQLSTATE 42000](错误 7399)
无法从链接服务器的 OLE DB 提供程序"SQLNCLI11"提取行集 "远程服务器名称"。.[SQLSTATE 42000](错误 7421)
链接服务器"远程服务器名称"的 OLE DB 提供程序"SQLNCLI11"返回消息"查询 超时已过期"。[SQLSTATE 01000](错误 7412)。 步骤失败。
-
步骤 3 成功后,持续时间在 1 - 7 分钟之间。
-
当步骤 3 失败时,持续时间在 12 - 15 分钟之间。
-
两个 SQL 服务器都将"远程查询超时"设置为 600 秒(10 分钟)。
奇怪的是,步骤 3 的整个过程只是一个简单的 DELETE 语句。
DELETE FROM [RemoteServerName].DbNameHere.dbo.CompanyProductLink_Copy
如果超时设置为 10 分钟,并且错误显示"查询超时已过期",为什么步骤持续时间在 12 到 15 分钟之间变化?
有没有更有效的方法从远程表中删除 ~1,000,000 条记录?
我可以很容易地增加超时...我只是想了解
运行SQL Server v12,在分配了24GB RAM的SSD上。
删除表可能需要一些时间。 假设您没有触发器或级联外键引用,则改用truncate table
:
TRUNCATE TABLE [RemoteServerName].DbNameHere.dbo.CompanyProductLink_Copy;
这应该比DELETE
快得多.