sql - 远程删除不一致地达到资源限制/超时
问题描述
我的 SQL 代理作业每天早上 4 点运行。它有 10 个步骤。
在过去的几周里,它每周在第 3 步上失败几次,并出现此错误。
链接服务器“RemoteServerName”的 OLE DB 提供程序“SQLNCLI11”报告错误。
由于达到资源限制,提供程序终止执行。[SQLSTATE 42000](错误 7399)
无法从链接服务器“RemoteServerName”的 OLE DB 提供程序“SQLNCLI11”获取行集。. [SQLSTATE 42000](错误 7421)
链接服务器“RemoteServerName”的 OLE DB 提供程序“SQLNCLI11”返回消息“查询超时已过期”。[SQLSTATE 01000](错误 7412)。步骤失败。
当步骤 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
.
推荐阅读
- powershell - 如何在powershell中读取machine.config并检查是否存在密钥
- javascript - 在 Angular 中调用远程 URL 时出现 CORS 策略错误
- r - 如何自定义 ctree(包 'party')?
- google-apps-script - 仅当文件存在时如何“复制到工作表”
- r - install.packages 'path' 中的警告不可写 R
- java - 模拟构建器模式的外部类中存在的方法(单元测试)
- reactjs - 如何将 authToken 设置为 localStorage
- python - 更改附件标题 MIME python
- haskell - Lookup values inside a Cassava-ingested CSV
- python-3.x - 熊猫 if else 仅在特定行上