SQL数据库超时过期问题的解决方案_第1页
SQL数据库超时过期问题的解决方案_第2页
SQL数据库超时过期问题的解决方案_第3页
SQL数据库超时过期问题的解决方案_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SQL 数据库超时过期问题的解决方案日减小字体困增大字体支匝如果SQL的数据库越来越多,有时候会遇到读取超时,死锁等一大堆问题,按经验来说,数据结构设计不合理,经常使用视图等原因都有,那些怎么解决呢?下面看文章1,由于数据库设计问题造成SQL数据库新增数据时超时症状:MicrosoftOLEDBProviderforSQLServer错误80040e31(ODBCSQLServerDriver超时已过期);服务器上看CPU、内存占用率很低;事件日志中提示:数据库*中文件*的自动增长在453毫秒后已取消或出现超时。使用ALTERDATABASE设置更小的FILEGROWTH或设置新的大小。原因:

2、数据库设置时,文件增长按百分比来增长,当数据库文件很大时(1G以上),新增操作都会报超时,而这时候其实CPU、内存占用率都非常非常的低。解决方法:把上述的文件增长这里设置为一个更低的百分比或者直接指定增加多少兆字节。2.SQLServer数据库超时设置修改客户端的连接超时设置。默认情况下,通过企业管理器注册另外一台SQLServer的超时设置是4秒,而查询分析器是15秒。企业管理器中的设置:A、在企业管理器中,选择菜单上的工具,再选择选项;B、在弹出的SQLServer企业管理器属性窗口中,点击高级”选项卡;C、在连接设置下的登录超时(秒)右边的框中输入一个比较大的数字,如30。查询分析器中的

3、设置:单击工具”-选项-连接;将登录超时设置为一个较大的数字,连接超时改为0。3,查询语句时超时原因分析:查询超时一般来说首先要从sql语句和数据表的结构上找原因,优化sql语句和为数据库的查询字段建索引是最常用的办法。另外,数据库的查询超时设置一般是sqlserver自己维护的(在你没有修改querywait配置前),只有当你的实际查询时间超过估计查询时间的25倍时,才会超时。而造成超出估计值那么多的原因有两种可能:一是估计时间不准确;二是sql语句涉及到大量占用内存的查询(如排序和哈希操作),内存不够,需要排队等待资源造成的。解决办法:A.优化语句,创建使用合适的索引;B.解决第一个问题的

4、方法,更新要查询表的索引分发统计,保证估计时间的正确性,UPDATESTATISTICS表名;C.增加内存如果想手动设置查询超时,可以使用以下语句:sp_configureshowadvancedoptions,1GORECONFIGUREGOsp_configurequerywait,2147483647GORECONFIGUREGO4.应用程序连接失败故障:在应用程序中我们也会遇到类似的错误信息,例如:MicrosoftOLEDBProviderforODBCDrivers错误80004005.MicrosoftODBCSQLServerDriver超时已过期.解决方法:A.如果遇到连接超

5、时的错误,我们可以在程序中修改Connection对象的超时设置,再打开该连接。例如:B,如果遇到查询超时的错误,我们可以在程序中修改Recordset对象的超时设置,再打开结果集。例如:DimcnAsNewADODB.ConnectionDimrsAsADODB.Recordset.cmdl=txtQuery.TextSetrs=NewADODB.Recordsetrs.Properties(CommandTimeOut)=300同样以秒为单位,如果设置为0表示无限制rs.Opencmd1,cnrs.MoveFirst.另外,一些硬件及网络方面的原因也可能造成SQL数据库连接超时呵呵,这个问

6、题很有趣不是吗?上面的同志们只是给出一些建议,以我的经验来看(oracle),如果数据量较大,索引的重复量尽量避免,最好的方式是建立非业务id(最好使用自增或是序列),把这个id建立索引。你的最大的问题就是,建立了索引后,索引列必须出现在where中,否则索引就白白建立了,比如你的id是从1一直到383000,那么你的语句可以写成select*fromhr_worktimewhereid-1还有就是,where条件中避免出现!=,or,between,等东西,否则索引实效。SQL杳询速度慢的原因查询速度慢的原因很多,常见如下几种:1、没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计

7、的缺陷)2、I/O 吞吐量小,形成了瓶颈效应。3、没有创建计算列导致查询不优化。4、内存不足 5、网络速度慢 6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。9、返回了不必要的行和列 10、查询语句不好,没有优化可以通过如下方法来优化查询:1、把数据、日志、索引放到不同的 I/O 设备上,增加读取速度,以前可以将 Tempdb 应放在 RAID0 上,SQL2000 不在支持。数据量(尺寸)越大,提高 I/O 越重要.2、纵向、横向分割表,减少表的尺

8、寸(sp_spaceuse)3、升级硬件 4、根据查询条件,建立索引,优化索引、优化访问方式,限制结果集的数据量。注意填充因子要适当(最好是使用默认值 0)。索引应该尽量小,使用字节数小的CREATEINDEX为给定表或视图创建索引。只有表或视图的所有者才能为表创建索引。表或视图的所有者可以随时创建索引,无论表中是否有数据。可以通过指定限定的数据库名称,为另一个数据库中的表或视图创建索引。语法CREATEUNIQUECLUSTERED|NONCLUSTEREDINDEXindex_nameONtable|view(columnASC|DESC,n)WITH,nONfilegroup:=PAD_

9、INDEX|FILLFACTOR=fillfactor|IGNORE_DUP_KEY|DROP_EXISTING|STATISTICS_NORECOMPUTE|SORT_IN_TEMPDB-这是基本语法,建立索引,只针对查询和一些更新和删除的速度,像性别一列,如果表里面有1000行,如果只有1行是男,这样用索引的话肯定高,如果有990行是男,那么它不如直接扫描了,这是选择性CREATEUNIQUECLUSTEREDNONCLUSTEREDINDEXindex_nameONtableview(columnASCDESC,n)例 1:为表 jbxx 创建一个非聚集索引,索引字段为 employee

10、_name,索引名为i_employeenamecreateindexi_employeenameonjbxx(employee_name)例 2:新建一个表,名称为 temp,为此表创建一个惟一聚集索引,索引字段为temp_number,索弓 I 名为 i_temp_number。usestudentCreatetablet_temp(temp_numberint,temp_namechar(10),temp_ageint)createuniqueclusteredindexi_temp_numberont_temp(temp_number)例 3:为表 s 创建一个复合索引,使用 sex

11、和 birthday 字段。UsestudentCreateindexi_sons(sex,birthday)(一)使用企业管理器查看、修改和删除索引的操作在企业管理器中,展开指定的服务器和数据库,右击要创建索引的表,从弹出的快捷菜单中依次选择所有任务|管理索引”选项,在出现的管理索引对话框中,选择要查看或修改的索引,单击编辑”按钮,出现编辑现有索引”对话框。在该对话框中,可以修改索引的大部分设置,还可以直接修改其 SQL 脚本,只需单击编辑 SQL 按钮,即可出现编辑Transact_SQl 脚本”对话框,在此可以编辑、分析、执行索引的 Transact_SQl 脚本。要在企业管理器中修改索

12、引的名称,需要在表的属性”对话框中进行。在企业管理器中,右击要修改名称的表,从弹出的快捷菜单中选择设计表”选项,在打开的设计表的窗口中,打开表的属性”对话框,选择索引/键”选项卡,在此对话框中,先选定要修改索引名称的索引,然后直接在索引名”文本框中输入心得索引名称替换原来的索引名称。要删除索引,可以在管理索引”对话框中或表的属性”对话框中,选择要删除的索引,单击删除按钮,即可删除索引。(二)使用 T_SQL 查看、修改和删除索引的操作使用系统存储过程查看索引信息,语法如下:sp_helpindexobjname=,name?例 1:查看 jbxx 表的索引信息sp_helpindexjbxx使用系统存储过程修改索引名称,语法如下:sp_renameobjname=,object_name?,newname=,n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论