现象:
    刚刚从SQL 2000升级到SQL 2005系统,每日下午16:30分左右,SQL 2005中的某一个表,INSERT语句插入会产生堵塞现象,锁类型为lck_m_ix,但SELECT 语句可执行,这个现象定时发作。
    此表未做任何操作,仅一条INSERT语句也会产生锁表。    已经设置自动更新统计信息为异步模式, 但仍未解决此问题。
服务器为:HP580 16G内存,设置为动态管理内存,分配给SQL最大内存为10G不知道是什么原因,盼高手指点!!!

解决方案 »

  1.   

    select blocking_session_id,wait_duration_ms,session_id from sys.dm_os_waiting_tasks where blocking_session_id not null
    DBCC INPUTBUFFER(52)52 代表的是会话 这里看你返回了什么kill  52
      

  2.   

    用 sp_who active 查看一下,看看有没有自愿互锁情况如果有就用 kill 进程ID命令就可以杀死他了。
      

  3.   

    SELECT  SessionID = s.Session_id ,
                    resource_type ,
                    DatabaseName = DB_NAME(resource_database_id) ,
                    request_mode ,
                    request_type ,
                    login_time ,
                    host_name ,
                    program_name ,
                    client_interface_name ,
                    login_name ,
                    nt_domain ,
                    nt_user_name ,
                    s.status ,
                    last_request_start_time ,
                    last_request_end_time ,
                    s.logical_reads ,
                    s.reads ,
                    request_status ,
                    request_owner_type ,
                    objectid ,
                    dbid ,
                    a.number ,
                    a.encrypted ,
                    a.blocking_session_id ,
                    a.text
            FROM    sys.dm_tran_locks l
                    JOIN sys.dm_exec_sessions s ON l.request_session_id = s.session_id
                    LEFT JOIN ( SELECT  *
                                FROM    sys.dm_exec_requests r
                                        CROSS APPLY sys.dm_exec_sql_text(sql_handle)
                              ) a ON s.session_id = a.session_id
            WHERE   s.session_id > 50
      

  4.   

    这个现象第天基本定时出现,这个表有多个索引,每次出现时,我用活动监视可以查到这些语句,我用等待时间排序,可以查到这些INSERT语句,但是即使我KILL这些进程,立刻执行一条INSERT,仅这一条语句,也会造成阻塞。是不是SQL2005有什么设置吗,
    没有在这个时间段运行的SQL中的作业。