gpt4 book ai didi

c# - 禁用超时时 SqlBulkCopy 到 Azure 超时

转载 作者:行者123 更新时间:2023-11-30 22:56:22 25 4
gpt4 key购买 nike

我正在尝试使用 .NET Core 中的 SqlBulkCopy 将几百万行批量插入到开发实例 Azure SQL 数据库中。

我已禁用连接字符串超时和 BulkCopyTimeout(将它们都设置为 0),但仍然超时。

现在这不是一台高层机器(它是一个开发环境),这个过程很容易使 DTU 达到最大...但我对 DTU 最大应该如何工作的理解是它是一种节流机制,不是中止机制。由于超时不受限制,我预计该过程需要一段时间但最终会完成。相反,我看到的是进程开始...上传一堆行...然后在奇怪的时间超时:2:38、4:20...没有押韵或原因。

这让我认为这是某种传输错误,但我显然收到了 TimeoutException。

根据 Bulk insert is not working properly in Azure SQL Server 中的建议,我也尝试过将批处理做得非常小,但这似乎也没有任何作用。

谁能解释一下这里发生了什么以及如何解决它?这阻碍了高可见度项目的开发,我讨厌告诉人们我可以让它在我的笔记本电脑的 SQL Server Express 上工作,但不能在 Azure DB 上工作。

最佳答案

请运行以下查询,让我们尝试查找有关 Azure SQL 数据库受到限制的证据。

SELECT *
FROM sys.dm_db_resource_stats
ORDER BY end_time DESC;

如果您看到 avg_log_write_percent 接近或等于 100%,则表示正在发生限制,您需要扩展数据库层。非高级层不适合 I/O 密集型工作负载,建议使用批处理。

当 Azure SQL 数据库发生限制时,您不仅会看到响应时间缓慢,而且还会开始看到不成功的连接尝试和超时。

select * 
from sys.event_log
where event_type <> 'connection_successful' and
start_time >= CAST(FLOOR(CAST(getdate() AS float)) AS DATETIME)
order by start_time desc

select *
from sys.database_connection_stats_ex
where start_time >= CAST(FLOOR(CAST(getdate() AS float)) AS DATETIME)
order by start_time desc

关于c# - 禁用超时时 SqlBulkCopy 到 Azure 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54517161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com