远程删除不一致地达到资源限制/超时
Remote delete inconsistently hits resource limit / timeout
我的 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 服务器都 'Remote Query Timeout' 设置为 600 秒(10 分钟)。
奇怪的是,整个步骤 3 只是一个简单的 DELETE 语句。
DELETE FROM [RemoteServerName].DbNameHere.dbo.CompanyProductLink_Copy
如果超时设置为 10 分钟,并且错误显示 'query timeout expired',为什么步骤持续时间在 12 到 15 分钟之间变化?
是否有更有效的方法从远程删除约 1,000,000 条记录table?
我可以很容易地增加超时...我只是想了解
运行 SQL 服务器 v12,在分配了 24GB RAM 的 SSD 上。
删除 table 可能需要一些时间。假设您没有触发器或级联外键引用,则使用 truncate table
代替:
TRUNCATE TABLE [RemoteServerName].DbNameHere.dbo.CompanyProductLink_Copy;
这应该比 DELETE
快得多。
我的 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 服务器都 'Remote Query Timeout' 设置为 600 秒(10 分钟)。
奇怪的是,整个步骤 3 只是一个简单的 DELETE 语句。
DELETE FROM [RemoteServerName].DbNameHere.dbo.CompanyProductLink_Copy
如果超时设置为 10 分钟,并且错误显示 'query timeout expired',为什么步骤持续时间在 12 到 15 分钟之间变化?
是否有更有效的方法从远程删除约 1,000,000 条记录table?
我可以很容易地增加超时...我只是想了解
运行 SQL 服务器 v12,在分配了 24GB RAM 的 SSD 上。
删除 table 可能需要一些时间。假设您没有触发器或级联外键引用,则使用 truncate table
代替:
TRUNCATE TABLE [RemoteServerName].DbNameHere.dbo.CompanyProductLink_Copy;
这应该比 DELETE
快得多。