错误 [HYT00] [Microsoft][ODBC Driver 17 for SQL Server]查询超时已过期

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

我有多个使用 Uipath 创建的机器人。这些机器人正在执行下表中的批量更新操作(我正在使用该活动):

enter image description here

数据库位于 SQL 服务器中,我的机器人是从一些 Azure 虚拟机执行的。两者位于同一地区。而且这张表没有主键和索引,总共有428.760条记录。

批量更新的目的是查找“id”列,然后更新“document_hash”列。

这是当前的连接字符串,我用来执行批量更新:

Driver={ODBC Driver 17 for SQL Server};Server=[myServer];Database=[myDatabase];Uid=[myUsername];Pwd=[myPassword];Encrypt=yes;TrustServerCertificate=no;Connection Timeout=300;

当机器人并行运行时,有时我会收到以下错误,并且更新 270 条记录需要一个多小时:

错误 [HYT00] [Microsoft][SQL Server 的 ODBC 驱动程序 17]查询超时已过期

我该如何解决这个问题?.

我读到我可以在“id”列中实现索引,但我也读到它在查询数据但不更新数据时有所帮助。

更新1:

提供有关 Uipath 活动的更多信息。我正在使用“批量更新”活动。此活动有一个名为 Bulk/batch update 的属性,在 [文档][1] 中说:

选中此框以启用使用批量创建临时表 使用表之间的联接进行插入和更新。否则,批量 更新是批量发布的。

默认选中。我决定禁用此属性以允许批量更新。对于这一更改,我仍然需要很长的更新时间。当我只运行一个机器人时,更新速度更快,当我并行触发更多机器人时,似乎存在锁定问题,正如@jdweng和@AlwaysLearning在评论中提到的那样。是否有任何配置或解决方案可以通过在“id”列中添加聚集索引来实现? [1]:https://docs.uipath.com/activities/other/latest/developer/bulk-update

c# sql-server uipath
1个回答
0
投票

我通过添加聚集索引解决了我的问题(基于@AlwaysLearning的建议)。显然,当多个机器人想要更新数据库时,就会有一个锁。通过索引,我能够将时间从一小时缩短到几秒。我把用来创建聚集索引的sql语句留在这里:

CREATE CLUSTERED INDEX idx_id
ON [TABLE_NAME] (id)
© www.soinside.com 2019 - 2024. All rights reserved.