none
Kill Complicado RRS feed

  • Pergunta

  • Prezados Bom dia!

     Estou a algum tempo tendo problemas com minhas conexões, executo SP_WHO, depois o comando KILL xx, fala que a conexão matou porem não matou e ela continua com o Status sleeping, teria alguma forma mais eficaz de resolver esse problema.

    vejam o resultado

     

    58 0 sleeping         rm                 NTB00116   0     CORPORERM_1180
    59 0 sleeping        ARAlopes         NTB00116  0     master
    61 0 sleeping        sysdba            STS00143   0     CORPORERM_1151
    62 0 sleeping        rm                 sts00143     0     CORPORERM_1151
    64 0 sleeping        rm                 sts00143     0     CORPORERM_1151
    66 0 runnable      ARAlopes         NTB00116   0     CORPORERM_1151
    67 0 sleeping        ARAlopes        NTB00116   0     CORPORERM_1151    

    tipo as informações em negrito, o servidor já estou desconectado porem ele continua.

    estranho demais.

                 

    quarta-feira, 4 de setembro de 2013 13:11

Respostas

  • Olá Ronnie,

    Observe se na coluna CMD o tipo de comando que está sendo executado.

    O que pode estar ocorrendo é que estas conexões esteja com o status KILLED ROLLBACK  e pode conter alguma outra conexões bloqueando o retorno das informações.

    "Se a resposta foi útil, não esqueça de marcar a resposta."

    Roberto Galvão

    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão quarta-feira, 4 de setembro de 2013 16:51
    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:19
    quarta-feira, 4 de setembro de 2013 16:51
  • Olá,

    Execute a procedure sp_who2. Olhe a coluna ProgramName. 

    Que de que aplicação está vindo estas conexões?

    "Se a resposta foi útil, não esqueça de marcar a resposta."

    Roberto Galvão

    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:19
    quarta-feira, 4 de setembro de 2013 17:12
  • Olá,

    Pode ter ocorrido alguma coisa no seu DTC caso aplicações use scopo de transação. Tente dar um restar no MSDTC.

    Ou uma solução mais drástica é derrubar as conns no banco de dados executando o seguinte comando:

    ALTER DATABASE dbteste
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

    ALTER DATABASE dbteste
    SET MULTI_USER 

    "Se a resposta foi útil, não esqueça de marcar a resposta."

    Roberto Galvão

    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão quarta-feira, 4 de setembro de 2013 17:28
    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:19
    quarta-feira, 4 de setembro de 2013 17:28
  • Tente assim, por favor.

    USE master; GO ALTER DATABASE [CORPORERM_1151] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE [CORPORERM_1151] SET MULTI_USER; GO

    Roberto Galvão

    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão quarta-feira, 4 de setembro de 2013 17:57
    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:18
    quarta-feira, 4 de setembro de 2013 17:56
  • Ronnie,

    Uma possível solução seria forçar o processamento destas transações através do comando Checkpoint e em seguida limpar o Buffer Cache do SQL Server, para isso:

    -- Consultando as transações em Cache --
    SELECT QT.text,
                 QP.query_plan,
                 QS.execution_count,
                 QS.total_elapsed_time,
                 QS.last_elapsed_time,
                 QS.total_logical_reads
    FROM sys.dm_exec_query_stats as QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as QT
     CROSS APPLY sys.dm_exec_query_plan (QS.plan_handle) as QP
    ORDER BY QS.execution_count DESC

    Em seguida, vamos limpara o Cache:

    -- Forçar a escrita das páginas em disco "limpando-as"
    
    CHECKPOINT
     
    
    -- Eliminar as páginas de buffer limpas
    
    DBCC DROPCLEANBUFFERS
    
     
    -- Eliminar todas as entradas do CACHE de "Procedures"
    
    DBCC FREEPROCCACHE
    
     
    
    -- Limpar as entradas de Cache não utilizadas
    
    DBCC FREESYSTEMCACHE ( 'ALL' )
    


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:18
    sexta-feira, 6 de setembro de 2013 14:08

Todas as Respostas

  • Olá Ronnie,

    Observe se na coluna CMD o tipo de comando que está sendo executado.

    O que pode estar ocorrendo é que estas conexões esteja com o status KILLED ROLLBACK  e pode conter alguma outra conexões bloqueando o retorno das informações.

    "Se a resposta foi útil, não esqueça de marcar a resposta."

    Roberto Galvão

    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão quarta-feira, 4 de setembro de 2013 16:51
    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:19
    quarta-feira, 4 de setembro de 2013 16:51
  • Boa tarde!

    Roberto esta dessa forma a coluna CMD
    AWAITING COMMAND
    AWAITING COMMAND
    AWAITING COMMAND
    SELECT         
    AWAITING COMMAND
    AWAITING COMMAND
    AWAITING COMMAND
    AWAITING COMMAND

    quarta-feira, 4 de setembro de 2013 16:54
  • Olá,

    Execute a procedure sp_who2. Olhe a coluna ProgramName. 

    Que de que aplicação está vindo estas conexões?

    "Se a resposta foi útil, não esqueça de marcar a resposta."

    Roberto Galvão

    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:19
    quarta-feira, 4 de setembro de 2013 17:12
  • Olá todas estão vindo desse local

    .Net SqlClient Data Provider                    

     

    quarta-feira, 4 de setembro de 2013 17:20
  • Olá,

    Pode ter ocorrido alguma coisa no seu DTC caso aplicações use scopo de transação. Tente dar um restar no MSDTC.

    Ou uma solução mais drástica é derrubar as conns no banco de dados executando o seguinte comando:

    ALTER DATABASE dbteste
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

    ALTER DATABASE dbteste
    SET MULTI_USER 

    "Se a resposta foi útil, não esqueça de marcar a resposta."

    Roberto Galvão

    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão quarta-feira, 4 de setembro de 2013 17:28
    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:19
    quarta-feira, 4 de setembro de 2013 17:28
  • Prezados me Desculpas, mas fui executar o os comandos e ocorreu o erro abaixo

    ALTER DATABASE CORPORERM_1151
     SET SINGLE_USER WITH ROLLBACK IMMEDIATE;


    ALTER DATABASE CORPORERM_1151
     SET MULTI_USER

    Mensagem 102, Nvel 15, Estado 1, Linha 1

    Sintaxe incorreta prxima a ''.

    Mensagem 102, Nvel 15, Estado 1, Linha 5

    Sintaxe incorreta prxima a ''.

    quarta-feira, 4 de setembro de 2013 17:52
  • Tente assim, por favor.

    USE master; GO ALTER DATABASE [CORPORERM_1151] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE [CORPORERM_1151] SET MULTI_USER; GO

    Roberto Galvão

    MCITP - Administration SQL Server 2008
    MCITP - Developer SQL Server 2008
    MCSA - SQL Server 2012


    Roberto Galvão | MCTS | MCITP | Microsoft Partner |

    • Sugerido como Resposta Roberto Galvão quarta-feira, 4 de setembro de 2013 17:57
    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:18
    quarta-feira, 4 de setembro de 2013 17:56
  • Ronnie,

    Uma possível solução seria forçar o processamento destas transações através do comando Checkpoint e em seguida limpar o Buffer Cache do SQL Server, para isso:

    -- Consultando as transações em Cache --
    SELECT QT.text,
                 QP.query_plan,
                 QS.execution_count,
                 QS.total_elapsed_time,
                 QS.last_elapsed_time,
                 QS.total_logical_reads
    FROM sys.dm_exec_query_stats as QS
     CROSS APPLY sys.dm_exec_sql_text(QS.sql_handle) as QT
     CROSS APPLY sys.dm_exec_query_plan (QS.plan_handle) as QP
    ORDER BY QS.execution_count DESC

    Em seguida, vamos limpara o Cache:

    -- Forçar a escrita das páginas em disco "limpando-as"
    
    CHECKPOINT
     
    
    -- Eliminar as páginas de buffer limpas
    
    DBCC DROPCLEANBUFFERS
    
     
    -- Eliminar todas as entradas do CACHE de "Procedures"
    
    DBCC FREEPROCCACHE
    
     
    
    -- Limpar as entradas de Cache não utilizadas
    
    DBCC FREESYSTEMCACHE ( 'ALL' )
    


    Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]

    • Marcado como Resposta Ronnie Von sexta-feira, 6 de setembro de 2013 14:18
    sexta-feira, 6 de setembro de 2013 14:08
  • Obrigado pessoal pela ajuda.

    sexta-feira, 6 de setembro de 2013 14:19