`
Freeze
  • 浏览: 112562 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

SQLSERVER2000中SLEEPING连接过多

 
阅读更多

 

1.   如果条件许可,   首先把iis和sql   server分到两台服务器中,   这样可以避免两者互相影响,   也有利于查找直接的原因.(例如,   由于IIS工作缓慢,   可能会导致不断的向sql发请求,   这样看起来似乎就是sql   server的问题)

2.   如果要查询是否连接没有释放引起的,   你可以用查询分析器连接到你的数据库服务器,   执行下面的代码:
select   *   from   master.dbo.sysprocesses 
where   spid> 50 
and   waittype   =   0x0000 
and   waittime   =   0 
and   status   =   'sleeping ' 
and   last_batch   <   dateadd(minute,   -10,   getdate()) 
and   login_time   <   dateadd(minute,   -10,   getdate()) 
 
如果这样的进程很多,   则说明连接确实有很多连接没有释放(上面的查询查询出已经超过10分钟都没有做任何动作的连接)


3.   如果确实是连接没有释放的问题,   你可以硬行释放连接,   不一定要改程序.   在sql   server中,   创建一个job,   每10分钟一次,   执行下面的代码来定时检查并释放掉空连接就可以了:
declare   hcforeach   cursor   global 
for 
select   'kill   '   +   rtrim(spid)   from   master.dbo.sysprocesses 
where   spid> 50 
and   waittype   =   0x0000 
and   waittime   =   0 
and   status   =   'sleeping ' 
and   last_batch   <   dateadd(minute,   -60,   getdate()) 
and   login_time   <   dateadd(minute,   -60,   getdate()) 
exec   sp_msforeach_worker   '? '
 
DBCP配置:
<Resource name="jdbc/SqlServer" auth="Container"  
			  type="javax.sql.DataSource" 
              driverClassName="com.microsoft.jdbc.sqlserver.SQLServerDriver"  
			  url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=dhdd_db"  
			  username="sa" 
              password="sa" 
              maxActive="2" 
              maxIdle="1"  
              maxWait="10"
              removeAbandoned="true"
              removeAbandonedTimeout="20"
              logAbandoned="true"
              validationQuery="select getDate()"
            />   
 
Apusic配置:
<datasource name="test" 
     jndi-name="jdbc/test" 
     driver-class="oracle.jdbc.OracleDriver"     url="jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = host1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = host2)(PORT = 1521))(LOAD_BALANCE = yes)(FAILOVER = ON)(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = RAC_DB)(FAILOVER_MODE=(TYPE = SELECT)(METHOD = BASIC)(RETIRES = 20)(DELAY = 15))))" 
     min-spare-connections="10" 
     max-spare-connections="35" 
     max-connections="75" 
  > 
    <property name="user" value="scott"/>    
    <property name="password" value="tiger"/> 
    <property name="test-before-reused" value="false"/> 
    <property name="test-command" value="select 1 from dual"/> 
    <remote-acl> 
      <user>admin</user> 
      <user>j2ee</user> 
    </remote-acl> 
  </datasource> 
 
List the queries running/blocking on SQL Server2011/12/27 12:41:57 | 阅读4次 There are various management views built into the product. On SQL 2000 you'd use sysprocesses. On SQL 2K5 there are more views like sys.dm_exec_connections, sys.dm_exec_sessions and sys.dm_exec_requests. There are also procedures like sp_who that leverage these views. In 2K5 Management Studio you also get Activity Monitor. This will show you the longest running SPIDs on a SQL 2000 server: select p.spid , right(convert(varchar, dateadd(ms, datediff(ms, P.last_batch, getdate()), '1900-01-01'), 121), 12) as 'batch_duration' , P.program_name , P.hostname , P.loginame from master.dbo.sysprocesses P where P.spid > 50 and P.status not in ('background', 'sleeping') and P.cmd not in ('AWAITING COMMAND' ,'MIRROR HANDLER' ,'LAZY WRITER' ,'CHECKPOINT SLEEP' ,'RA MANAGER') order by batch_duration desc If you need to see the SQL running for a given spid from the results, use something like this: declare @spid int , @stmt_start int , @stmt_end int , @sql_handle binary(20) set @spid = XXX -- Fill this in select top 1 @sql_handle = sql_handle , @stmt_start = case stmt_start when 0 then 0 else stmt_start / 2 end , @stmt_end = case stmt_end when -1 then -1 else stmt_end / 2 end from master.dbo.sysprocesses where spid = @spid order by ecid SELECT SUBSTRING( text, COALESCE(NULLIF(@stmt_start, 0), 1), CASE @stmt_end WHEN -1 THEN DATALENGTH(text) ELSE (@stmt_end - @stmt_start) END ) FROM ::fn_get_sql(@sql_handle) here is a query that will show any queries that are blocking. I am not entirely sure if it will just show slow queries: SELECT p.spid ,convert(char(12), d.name) db_name , program_name , convert(char(12), l.name) login_name , convert(char(12), hostname) hostname , cmd , p.status , p.blocked , login_time , last_batch , p.spid FROM master..sysprocesses p JOIN master..sysdatabases d ON p.dbid = d.dbid JOIN master..syslogins l ON p.sid = l.sid WHERE p.blocked = 0 AND EXISTS ( SELECT 1 FROM master..sysprocesses p2 WHERE p2.blocked = p.spid ) if you're running SQL 2005 or 2008, you could use the DMV's to find this... SELECT * FROM sys.dm_exec_requests CROSS APPLY sys.dm_exec_sql_text(sql_handle) more about sys.dm_exec_requests more about sys.dm_exec_sql_text http://www.haogongju.net/art/1168212
分享到:
评论

相关推荐

    sql server 查看数据库用户连接数

    本文将详细介绍如何通过SQL查询来查看SQL Server中的数据库用户连接数。 ### 代码解析 提供的SQL查询语句是从`master..sysprocesses`表中选择与用户会话相关的信息。此查询可以帮助我们获取当前所有活跃会话的信息...

    Sqlserver查询释放空连接(预防死锁、卡顿)

    在 Sqlserver 中,空连接是指状态为“sleeping”的连接,表示当前连接没有活动的 SQL 语句在执行,但仍然占用系统资源。这些空连接可能会导致死锁和卡顿的发生,因为它们占用系统资源,阻止其他连接的执行。 释放空...

    SQL查看特定数据库连接信息

    在SQL Server环境中,有时候我们需要查询特定数据库的连接信息以便进行监控、调试或优化等工作。本文将详细介绍如何通过SQL语句来实现这一需求。 #### 准备工作 在开始之前,请确保您具备以下条件: 1. **SQL ...

    java+sqlserver2005学生管理系统

    SQL Server 2005作为数据库系统,它提供了强大的数据存储和处理能力,适合中小规模的数据管理需求。 在“登陆注册”模块,系统应具备以下功能: 1. 用户注册:允许新用户输入相关信息(如用户名、密码、邮箱等)来...

    sql最全的常用命令语句

    ### SQL 最全常用命令语句解析 #### 一、查询数据库连接数 - **命令**: ```sql select count(*) from Master....以上命令涵盖了 SQL Server 中常用的监控与诊断技巧,能够帮助 DBA 和开发人员快速定位和解决问题。

    Laravel开发-sleeping-owl

    在Laravel开发中,Sleeping Owl提供了一套完整的预设模板,包括表格展示、表单编辑、分页、排序、过滤等常见的管理界面元素。这些模板都是基于Bootstrap框架,确保了界面在各种设备上都能有良好的响应式表现。同时,...

    proxool配置详解

    4. **JDBC驱动兼容性**:在描述中提到的“专门针对2005的驱动”,可能是指Proxool支持特定版本的数据库驱动,如SQL Server 2005。如果需要替代,可以使用如`jtds`这样的第三方驱动,它同样支持多种数据库,包括SQL ...

    中班短语sleeping so tight.doc

    在活动中,首先通过教学挂图"Everything is sleeping"复习了hive(蜂巢)、nest(鸟巢)和pond(池塘)这三个词汇,教师通过问答的方式引导孩子说出蜜蜂在蜂巢中睡觉的行为。接着引入新词汇lion(狮子)和zoo...

    Sleeping-Barber:使用pthreads库解决Sleeping Barber同步问题的C代码

    在计算机科学中,Sleeping Barber问题是一个经典的多线程同步问题,它源于现实生活中的理发店场景:一个理发师在没有顾客时会打盹儿,当有顾客到来时,顾客会唤醒理发师为其服务。在多线程环境下,这个场景涉及到...

    杀死正在使用数据库的线程.pdf

    在SQL Server中,数据库的管理和维护是至关重要的任务,尤其是当遇到无法正常操作的情况,例如在尝试还原数据库时出现“因为数据库正在使用,所以无法获得对数据库的独占访问权”的错误。这个问题通常是因为有其他...

    Qt数据库应用程序

    首先,Qt中的SQL模块为开发者提供了与多种数据库系统交互的能力,如SQLite、MySQL、PostgreSQL等。要使用数据库功能,我们需要包含对应的头文件,并确保在项目文件(.pro)中添加相应的数据库驱动。例如,如果我们要...

    知羽电子相册模板之英文儿歌sleeping

    知羽电子相册模板之英文儿歌sleeping 其他模板请参照本人其他资源

    Sleeping_Dogs_SAVE_Games2you.rar_Just Cause_sds

    在你提供的压缩包“Sleeping_Dogs_SAVE_Games2you.rar_Just_Cause_sds”中,包含了一个解锁所有内容且未被摧毁的游戏存档,这对于喜欢探索和享受游戏全部内容的玩家来说非常有价值。 存档名"Hardcore-mode"表明这是...

    Laravel开发-sleeping-owl-admin-lte-template

    在命令行中输入`composer require sleeping-owl/admin`,然后执行`php artisan vendor:publish --provider="SleepingOwl\Admin\AdminServiceProvider"`,将配置文件和视图文件发布到Laravel项目中。 2. 配置:配置...

    幼儿园管理系统

    图形用户界面,SQL Server数据库。 记录学生信息,如姓名、出生日期、英文名、昵称、父母姓名、手机号、家庭地址等,便于幼儿园的日常管理。 记录大、中、小三个班级学生的日常情况,如eating、sleeping、playing、...

    Net数据库备份与还原

    描述中提到的“此存储过程应写在Master中”,指的是将备份相关的存储过程(Stored Procedure)创建在SQL Server的主数据库(Master)中。主数据库负责维护系统级别的信息,存放这些全局性的存储过程有助于统一管理和...

    Sleeping_Bag.zip_PID 温度 加热_PID温度控制_bluetooth HC-06_pid_stm32f103

    标题中的“Sleeping_Bag.zip_PID 温度 加热_PID温度控制_bluetooth HC-06_pid_stm32f103”揭示了一个基于PID(比例-积分-微分)控制算法的项目,用于实现对睡袋内部温度的精确调节。这个系统利用DS18B20数字温度...

    幼儿园教案2021-中班短语sleeping so tight.doc

    幼儿园教案2021-中班短语sleeping so tight.doc

    中班英语教案《sleeping so tight》润新教育.txt

    中班英语教案《sleeping so tight》润新教育.txt

    :sleeping_face:超级懒惰和流畅的Kotlin表达式,用于初始化生命周期感知属性。-Android开发

    Lazybones:sleeping_face:超级懒惰和流畅的Kotlin表达,可初始化生命周期感知属性。 啊...我是个超级懒惰的人。 我只想初始化并声明要同时处置它。 Lazybones:sleeping_face:超级懒惰和流畅的Kotlin表达,可初始化...

Global site tag (gtag.js) - Google Analytics