gpt4 book ai didi

c# - SQL Server 长时间运行的查询通过 .Net 随机超时

转载 作者:太空狗 更新时间:2023-10-30 01:22:33 25 4
gpt4 key购买 nike

我们有一个程序连接到我们的数据库并运行一些存储过程来获取一些数据。

数据库是SQL Server 2008,程序在本地运行。连接是通过 TCP/IP 进行的,但启用了共享内存。并且连接字符串的超时设置为 45 秒。

当我们通过 SQL Server Management Studio 运行它们时,运行需要 0-5 秒。当我们通过代码运行它时,它会随机超时。

为了进行一些测试,我们将超时从 45 秒增加到几分钟。并且为了排除任何阻塞问题,我们检查了存储过程是否只“选择”数据(没有插入或更新语句)。我们已经为 select 语句尝试了几种表修饰符,例如:nolockreadpast、...

我还检查了 sp_who2dbcc opentran() 没有任何东西被阻止... .Net 的 SPID 是 running command ...。有关 .Net 等待数据库响应时的更多详细信息,通过 SQL Server Management Studio 我可以毫无问题地运行相同的语句(存储过程或选择)。

对正在发生的事情有什么建议吗?

最佳答案

连接字符串超时只影响登录超时。您似乎遇到了命令超时,只能通过修改 CommandTimeout 来更改。 .默认值为 30 秒,推荐值为 0(无限超时)。

至于为什么你的程序会随机执行缓慢,我建议先阅读Slow in the Application, Fast in SSMS? Understanding Performance Mysteries

顺便说一句,您的查询可能没有被阻止。它执行一个不同的计划,执行起来只需要那么长时间。在 sys.dm_exec_requests 中检查 last_wait_type可能会显示 IO 等待(PAGEIOLATCH,在追逐任何红鲱鱼 CXPACKET 之后 sys.dm_os_workers 连接...)。但没有必要重复我最初链接的 Erland Sommarskog 撰写的更全面、更优秀的文章。

关于c# - SQL Server 长时间运行的查询通过 .Net 随机超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13310856/

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