通过C#查询SQLServer数据库超时

发布时间:2020-07-11 20:31:50 作者:helicon80
来源:网络 阅读:2248

生产环境的系统,在查询数据的时候,日志记录数据“Timeout 时间已到。在操作完成之前超时时间已过或服务器未响应。”,“等待的操作过时”等,初步判断是因为查询超时导致的,根据源码分析,获取到查询操作的SQL脚本,然后跟踪到查询业务的SQL参数信息,在数据库中查询,发现数据的返回时间小于1s,基本上是实时返回,排除了锁表等操作。
后更改数据查询的超时时间,改成3分钟,系统还是报查询超时。但是程序在测试环境,反复的测试,也没有问题;而且程序昨天是正常的,数据量也没有出现暴增的情况,整体的数据量也不大。
后通过网络查询,发现有重启服务器解决该问题的方法,但是由于是生成环境,没法进行重启服务器,客户在等,很是着急。后在通过万能的网络,查询到,可能是参数化传参导致的,传递参数的SqlDbType和数据库里的类型不一致会导致出现数据库上直接查询,返回数据很快,但是通过程序去查询,会出现查询超时的情况。然后去检查程序和数据库,发现确实不一致,程序中使用的是SqlDbType.VarChar,但是在数据库存储中使用的数据类型是NVarChar。
然后修改程序的SQL语句不是参数化传参,改为拼接的方式,然后发布程序,登录检测,发现程序正常返回数据,这样看来,问题就出现在C#程序中的参数化的参数类型和数据库中的类型不一致导致的。
这个Bug,是个隐藏的Bug,问题不会一直出现,因为程序中这样操作的,不仅仅是这个查询的一处地方。这次的问题比较特殊,做个记录,以备下次查询。

推荐阅读:
  1. SqlServer系列笔记——子查询
  2. SqlServer系列笔记——简单查询

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

程序 数据库 查询

上一篇:智云通CRM:大数据时代,用简单方式让数据说话

下一篇:深入浅出TCP/IP协议栈

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》