My SQL 代理作业每天早上 4 点运行。它有 10 个步骤。
过去几周,每周都会在第 3 步中失败几次并出现此错误。
The OLE DB provider "SQLNCLI11" for linked server "RemoteServerName" reported an error.
Execution terminated by the provider because a resource limit was reached. [SQLSTATE 42000] (Error 7399)
Cannot fetch the rowset from OLE DB provider "SQLNCLI11" for linked server "RemoteServerName". . [SQLSTATE 42000] (Error 7421)
OLE DB provider "SQLNCLI11" for linked server "RemoteServerName" returned message "Query timeout expired". [SQLSTATE 01000] (Error 7412). The step failed.
当第 3 步成功时,持续时间为 1 - 7 分钟。
当步骤 3 失败时,持续时间为 12 - 15 分钟。
两个 SQL Server 都将“远程查询超时”设置为 600 秒(10 分钟)。
奇怪的是,整个步骤 3 只是一个简单的 DELETE 语句。
DELETE FROM [RemoteServerName].DbNameHere.dbo.CompanyProductLink_Copy
如果超时设置为 10 分钟,并且错误显示“查询超时已过期”,为什么步骤持续时间在 12 到 15 分钟之间变化?
是否有更有效的方法从远程表中删除约 1,000,000 条记录?
我可以很容易地增加超时...我只是想了解
在分配有 24GB RAM 的 SSD 上运行 SQL Server v12。
最佳答案
删除表可能需要一些时间。假设您没有触发器或级联外键引用,则使用 truncate table
代替:
TRUNCATE TABLE [RemoteServerName].DbNameHere.dbo.CompanyProductLink_Copy;
这应该比DELETE
快得多。
关于sql - 远程删除不一致地达到资源限制/超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56632883/