• 微信
    咨询
    微信在线咨询 服务时间:9:00-18:00
    纵横数据官方微信 使用微信扫一扫
    马上在线沟通
  • 业务
    咨询

    QQ在线咨询 服务时间:9:00-18:00

    选择下列产品马上在线沟通

    纵横售前-老古
    QQ:519082853 售前电话:18950029581
    纵横售前-江夏
    QQ:576791973 售前电话:19906048602
    纵横售前-小李
    QQ:3494196421 售前电话:19906048601
    纵横售前-小智
    QQ:2732502176 售前电话:17750597339
    纵横售前-燕子
    QQ:609863413 售前电话:17750597993
    纵横值班售后
    QQ:407474592 售后电话:18950029502
    纵横财务
    QQ:568149701 售后电话:18965139141

    售前咨询热线:

    400-188-6560

    业务姚经理:18950029581

  • 关注

    关于纵横数据 更多优惠活动等您来拿!
    纵横数据官方微信 扫一扫关注官方微信
  • 关闭
  • 顶部
  • 您所在的位置 : 首页 > 新闻公告 > MSSQL数据库超时的原因与解决方法

    MSSQL数据库超时的原因与解决方法


    MSSQL数据库超时的原因与解决方法【艾娜小编】

    如果SQL的数据库越来越多,有时候会遇到读取超时,锁等一大堆问题,按经验来说,数据结构设计不合理,经常使用视图等原因都有,那些怎么解决呢?

    1、由于数据库设计问题造成SQL数据库新增数据时超时

    症状:

    A、

    Microsoft OLE DB Provider for SQL Server 错误 '80040e31'

    [ODBC SQL Server Driver]超时已过期)

    B、服务器上看CPU、内存占用率很低;

    C、事件日志中提示: 数据库 '*********' 中文件 '***********' 的自动增长在 453 毫秒后已取消或出现超时。使用 ALTER DATABASE 设置更小的 FILEGROWTH 或设置新的大小。

    原因:

    数据库设置时,[文件增长]按百分比来增长,当数据库文件很大时(1G以上),新增操作都会报超时,而这时候其实CPU、内存占用率都非常非常的低。

    解决方法:

    把上述的文件增长这里设置为一个更低的百分比或者直接指定增加多少兆字节。

    2、SQL Server数据库超时设置

    修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外一台SQL Server的超时设置是 4 秒,而查询分析器是 15 秒。

    企业管理器中的设置:

    A、在企业管理器中,选择菜单上的"工具",再选择"选项";

    B、在弹出的"SQL Server企业管理器属性"窗口中,点击"高级"选项卡;

    C、在"连接设置"下的"登录超时(秒)"右边的框中输入一个比较大的数字,如 30。

    查询分析器中的设置:

    单击“工具”->"选项"->"连接"; 将登录超时设置为一个较大的数字,连接超时改为0。

    3、查询语句时超时

    原因分析:

    查询超时一般来说首先要从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

    4、应用程序连接失败

    故障:

    在应用程序中我们也会遇到类似的错误信息,例如:

    Microsoft OLE DB Provider for ODBC Drivers 错误 '80004005'

    [Microsoft][ODBC SQL Server Driver]超时已过期

    解决方法:

    A、如果遇到连接超时的错误,我们可以在程序中修改 Connection 对象的超时设置,再打开该连接。例如:

    <%

    Set Conn = Server.CreateObject("ADODB.Connection")

    DSNtest="DRIVER={SQL Server};SERVER=ServerName;UID=USER;PWD=password;DATABASE=mydatabase"

    Conn. Properties("Connect Timeout") = 15 '以秒为单位,0表示不限制

    Conn.open DSNtest

    %>

    B、如果遇到查询超时的错误,我们可以在程序中修改 Recordset 对象的超时设置,再打开结果集。例如:

    Dim cn As New ADODB.Connection

    Dim rs As ADODB.Recordset

    cmd1 = txtQuery.Text

    Set rs = New ADODB.Recordset

    rs.Properties("Command Time Out") = 300

    '同样以秒为单位,如果设置为 0 表示无限制

    rs.Open cmd1, cn

    rs.MoveFirst
    --------------------------

    新上的美国站群服务器8C 现货 限量特价 速定! cn2限量一人3台
    E5 16G 1T 8C 232IP
    E5*2 32G 1T 8C 232IP
    E5*2 32G 2T 8C 232IP
    E5*2 32G 3T 8C 232IP
    美国站群服务器 特价欢迎联系在线客服 QQ 4001886560 482986990


    最新推荐


    微信公众帐号
    关注我们的微信