您的当前位置:首页正文

sqlserver事务返回超时,实际成功

2023-11-12 来源:好兔宠物网

这两天出现一个问题。

在客户现场,调用一个事务,用于insert。

为什么要用事务去insert,是因为插入数据后,要返回主键id,通过事务可以output insert.id。

最近数据库不稳定,调用这个事务,是通过query,代码返回错误,查询超时已过期,而实际上,数据库已经插入了这条数据,悲剧!

 

具体原因未找到,但分析是以下的原因:

事务执行分为以下步骤:

1.insert 

2.事务结束

3.返回insert.id

4.代码接口返回

前面两步ok,第3步error timeout,导致代码接口失败,实际上insert是成功了。

 

网上没找到相关资料。后续有时间再看看吧

sqlserver事务返回超时,实际成功

标签:接口   nbsp   时间   insert   相关   执行   数据库   原因   资料   

小编还为您整理了以下内容,可能对您也有帮助:

.NET连接SQLServer返回数据时提示“超时时间已到。在操作完成之前超时时间已过或服务器未响应。” 附代码

我也遇到过这个问题,你可以试着打开你的sql客户端,连接下服务器上的数据库,估计会直接出现这个错误提示,然后你把连接时间改成30秒,或者更长一些就能够登录到服务器上的sql server.

解决方法就是把项目配置文件中的访问超时时间设置长一些.

我遇到这个问题时是因为我的项目发布在虚拟机上,所以速度比较慢,访问总是超时,去试试吧,这个方法或许能解决你的问题.

不行的话就在代码上设置command的timeout时间.

sql 数据库连接超时

原因分析:
查询超时一般来说首先要从sql语句和数据表的结构上找原因,优化sql语句和为数据库的查询字段建索引是最常用的办法。
另外,数据库的查询超时设置一般是sqlserver自己维护的(在你没有修改query wait配置前),只有当你的实际查询时间超过估计查询时间的25倍时,才会超时。
而造成超出估计值那么多的原因有两种可能:
一是估计时间不准确;
二是sql语句涉及到大量占用内存的查询(如排序和哈希操作),内存不够,需要排队等待资源造成的。
解决办法:
A.优化语句,创建/使用合适的索引;
B.解决第一个问题的方法,更新要查询表的索引分发统计,保证估计时间的正确性,UPDATE STATISTICS 表名;
C.增加内存
如果想手动设置查询超时,可以使用以下语句:
sp_configure 'show advanced options', 1 GO RECONFIGURE GO sp_configure 'query wait', 2147483647 GO RECONFIGURE GO

sql 数据库连接超时

原因分析:
查询超时一般来说首先要从sql语句和数据表的结构上找原因,优化sql语句和为数据库的查询字段建索引是最常用的办法。
另外,数据库的查询超时设置一般是sqlserver自己维护的(在你没有修改query wait配置前),只有当你的实际查询时间超过估计查询时间的25倍时,才会超时。
而造成超出估计值那么多的原因有两种可能:
一是估计时间不准确;
二是sql语句涉及到大量占用内存的查询(如排序和哈希操作),内存不够,需要排队等待资源造成的。
解决办法:
A.优化语句,创建/使用合适的索引;
B.解决第一个问题的方法,更新要查询表的索引分发统计,保证估计时间的正确性,UPDATE STATISTICS 表名;
C.增加内存
如果想手动设置查询超时,可以使用以下语句:
sp_configure 'show advanced options', 1 GO RECONFIGURE GO sp_configure 'query wait', 2147483647 GO RECONFIGURE GO

sqlserver远程连接中链接服务器"”的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "登录超时已过期问题

首先要排除要LINK的远程服务器防火墙没有问题,即允许SQLSERVER进程通行或例外。

然后检查远程服务器上目标数据库的状态是否正常,如是否有阻塞进程或该用户有权限。

当然可能还有其他方面的原因。

一个sqlserver2005存储过程的问题:超时后把存储过程重新后台执行一次,编译后页面就恢复正常。这是为什么

你的存储过程好好看看再分析一下,是否算法有问题,或者运行时要占用大量内存。

还有个办法,就是删除原来的,重新建个一样的存储过程。我曾经试过,问题解决了。