CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

大力等高手请进

楼主nullarea(色弃缘空)2003-12-04 12:53:21 在 MS-SQL Server / 疑难问题 提问

有个问题想请教,  
  我想将我数据库设置为,每当处理一个事务,限时30秒,如果30秒事务没有完成,自动将事务回滚。请问怎么处理? 问题点数:0、回复次数:7Top

1 楼txlicenhe(马可)回复于 2003-12-04 12:58:14 得分 0

联机帮助:  
  LockTimeout   (clsServer)  
  The   LockTimeout   property   of   an   object   of   ClassType   clsServer   sets   or   returns   the   amount   of   time   until   a   lock   request   fails   due   to   timeout.  
   
  Data   Type  
  Long  
   
  Access  
  Read/write  
   
  Remarks  
  The   value   of   this   property   must   not   be   less   than   zero.   The   default   is   20   seconds.   For   more   information   about   locking   a   server,   see   LockObject,   UnlockObject,   and   UnlockAllObjects.  
   
   
  See   Also  
   
  clsServer  
   
  Top

2 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-04 13:04:08 得分 0

你可以将命令超时设为30秒,然后超过30秒事务没有处理完的话就会出错,你可以在错误处理中回滚事务Top

3 楼CrazyFor(冬眠的鼹鼠)回复于 2003-12-04 13:05:47 得分 0

 
    Transact-SQL   参考    
   
     
  SET   LOCK_TIMEOUT  
  指定语句等待锁释放的毫秒数。  
   
  语法  
  SET   LOCK_TIMEOUT   timeout_period  
   
  参数  
  timeout_period  
   
  是在   Microsoft®   SQL   Server™   返回锁定错误前经过的毫秒数。值为   -1(默认值)时表示没有超时期限(即无限期等待)。  
   
  当锁等待超过超时值时,将返回错误。值为   0   时表示根本不等待,并且一遇到锁就返回信息。  
   
  注释  
  在连接开始时,该设置的值为   -1。设置更改后,新设置在其余的连接时间里一直有效。  
   
  SET   LOCK_TIMEOUT   的设置是在执行或运行时设置,而不是在分析时设置。  
   
  READPAST   锁定提示为该   SET   选项提供了另一种方式。  
   
  权限  
  SET   LOCK_TIMEOUT   权限默认授予所有用户。  
   
  示例  
  下例将锁超时期限设置为   1,800   毫秒。  
   
  SET   LOCK_TIMEOUT   1800  
  GO  
   
   
  请参见  
   
  锁定提示  
   
  @@LOCK_TIMEOUT  
   
  SET  
   
  ©1988-2000   Microsoft   Corporation。保留所有权利。  
  Top

4 楼txlicenhe(马可)回复于 2003-12-04 13:11:18 得分 0

继续联机帮助:  
   
  自定义锁超时  
  当由于另一个事务已拥有一个资源的冲突锁,而导致   Microsoft®   SQL   Server™   2000   无法将锁授权给该资源的某个事务时,该事务被阻塞以等待该资源的操作完成。如果这导致了死锁,则   SQL   Server   将终止其中参与的一个事务(不涉及超时)。如果没有出现死锁,则在其它事务释放锁之前,请求锁的事务被阻塞。默认情况下,没有强制的超时期限,并且除了试图访问数据外(有可能被无限期阻塞),没有其它方法可以测试某个资源是否在锁定之前已被锁定。  
   
   
   
  说明     sp_who   系统存储过程可用于确定进程是否正被阻塞以及被谁阻塞。  
   
   
  LOCK_TIMEOUT   设置允许应用程序设置语句等待阻塞资源的最长时间。当语句等待的时间大于   LOCK_TIMEOUT   设置时,系统将自动取消阻塞的语句,并给应用程序返回"已超过了锁请求超时时段"的   1222   号错误信息。  
   
  但是,SQL   Server   不回滚或取消任何包含该语句的事务。因此,应用程序必须有捕获   1222   号错误信息的错误处理程序。如果应用程序没有捕获错误,则会继续运行,并未意识到事务中的个别语句已取消,从而当事务中的后续语句可能依赖于那条从未执行的语句时,导致应用程序出错。  
   
  执行捕获错误信息   1222   的错误处理程序使应用程序得以处理发生超时的情况,并采取补救操作,例如可以自动重新提交阻塞的语句或者回滚整个事务。  
   
  若要确定当前   LOCK_TIMEOUT   设置,请执行   @@LOCK_TIMEOUT   函数,例如:  
   
  DECLARE   @Timeout   int  
  SELECT   @Timeout   =   @@lock_timeout  
  SELECT   @Timeout  
  GO  
   
  Top

5 楼pengdali()回复于 2003-12-04 13:34:55 得分 0

----超过了3秒将会自动强制停止.  
   
  SET   LOCK_TIMEOUT   3000  
   
  或:  
   
  选中Microsoft   SQL   Servers-->工具栏,工具-->选项-->高级-->查询超时-->改为0  
   
  选中Microsoft   SQL   Servers-->工具栏,工具-->选项-->高级-->连接超时-->改为0Top

6 楼leimin(黄山光明顶)回复于 2003-12-04 15:56:41 得分 0

我认为:  
  如果30秒事务没有完成<>DEADLOCK!!  
   
  LOCK_TIMEOUT   有用么??Top

7 楼laurecn(每天努力多一点)回复于 2003-12-04 19:28:24 得分 0

upTop

相关问题

  • pengdali(大力) ,请进。
  • 谢谢(大力)!请pengdali(大力)进入接分。
  • pengdali(大力) 请进,请教临时表的事情。
  • meizz兄请进,谢谢你的大力帮助
  • 感谢sumanden给我的大力帮助,请进来领分!
  • 2002年度劳模奖!!!---->请 pengdali(大力)进来领奖。
  • 感谢ZHANG9652对我的大力帮助!请进来拿分!
  • pengdali(大力) 请来领分
  • zqllyh(您问我也问总可以问出个所以然),pengdali(大力)和j9988(j9988) 请进,这900分特别酬谢《
  • zqllyh(您问我也问总可以问出个所以然),pengdali(大力)和j9988(j9988) 请进,这900分特别酬谢 2

关键词

  • 语句
  • 应用程序
  • 选项
  • 执行
  • 连接
  • 信息
  • microsoft
  • sql
  • 超时
  • 事务

得分解答快速导航

  • 帖主:nullarea

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo