AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 23335
Accepted
Lloyd Banks
Lloyd Banks
Asked: 2012-08-29 13:15:44 +0800 CST2012-08-29 13:15:44 +0800 CST 2012-08-29 13:15:44 +0800 CST

"período de tempo limite de solicitação de bloqueio excedido" Erro ao tentar ver hierarquias de banco de dados

  • 772

Estou tendo problemas com um banco de dados.

  1. Posso executar consultas básicas, embora muito mais lentas que o normal.

  2. Quando tento exibir as árvores de hierarquia para tabelas, exibições ou procedimentos no SSMS Object Explorer, recebo arquivos lock request time out period exceeded.

  3. Meus relatórios do SSRS executados em objetos neste banco de dados não estão mais sendo concluídos.

  4. Os trabalhos associados aos procedimentos armazenados nesse banco de dados também não são executados.

Tentei usar sp_who2para encontrar e matar todas as conexões no banco de dados, porém isso não resolveu o problema.

O que está acontecendo aqui? Como posso resolver isto?

sql-server sql-server-2008
  • 9 9 respostas
  • 184673 Views

9 respostas

  • Voted
  1. Best Answer
    Lloyd Banks
    2012-10-11T07:45:15+08:002012-10-11T07:45:15+08:00

    Estava sendo causado por uma reversão perpétua de uma transação. Tive que eventualmente reiniciar meu cluster de servidor

    • 21
  2. Turbot
    2012-08-29T13:36:48+08:002012-08-29T13:36:48+08:00

    Excluindo a consideração de Harware, talvez você precise executar o script para verificar quais são as atividades retendo a Sessão SQL, um dos cenários comuns é não usar um Implicit transactions Optionno SQL Server Management Studio.

    • 7
  3. Baodad
    2017-04-25T08:02:53+08:002017-04-25T08:02:53+08:00

    Eu tive esse problema quando iniciei uma transação explícita na qual criei uma tabela em tempdb a partir de um script em execução em outro banco de dados (não tempdb). Quando eu fiz o commit da transação, o commit não pareceu liberar o bloqueio na tabela que eu criei no tempdb.

    Graças a esta página , eu USEd tempdb e executei DBCC OPENTRANe obtive o SPID da conexão com o tempdb que estava causando o bloqueio. Então eu KILL <SPID number>para matá-lo.

    Não muito gracioso, e perdi todas as informações da tabela que criei no tempdb, mas no meu caso tudo bem.

    • 7
  4. Julio Nobre
    2019-06-20T06:17:30+08:002019-06-20T06:17:30+08:00

    Como muitos já haviam apontado, geralmente há uma transação de longa duração, principalmente causada pela falta de uso de SET IMPLICIT TRANSACTIONS ON, que não deve ser usado de forma alguma. Para ver por que verifique o artigo perspicaz de Brent Ozar

    De qualquer forma, você pode obter uma lista de transações pendentes de longa duração usando a seguinte consulta.

    SELECT
        [s_tst].[session_id],
        [s_es].[login_name] AS [Login Name],
        DB_NAME (s_tdt.database_id) AS [Database],
        [s_tdt].[database_transaction_begin_time] AS [Begin Time],
        [s_tdt].[database_transaction_log_bytes_used] AS [Log Bytes],
        [s_tdt].[database_transaction_log_bytes_reserved] AS [Log Rsvd],
        [s_est].text AS [Last T-SQL Text],
        [s_eqp].[query_plan] AS [Last Plan]
    FROM
        sys.dm_tran_database_transactions [s_tdt]
    JOIN
        sys.dm_tran_session_transactions [s_tst]
    ON
        [s_tst].[transaction_id] = [s_tdt].[transaction_id]
    JOIN
        sys.[dm_exec_sessions] [s_es]
    ON
        [s_es].[session_id] = [s_tst].[session_id]
    JOIN
        sys.dm_exec_connections [s_ec]
    ON
        [s_ec].[session_id] = [s_tst].[session_id]
    LEFT OUTER JOIN
        sys.dm_exec_requests [s_er]
    ON
        [s_er].[session_id] = [s_tst].[session_id]
    CROSS APPLY
        sys.dm_exec_sql_text ([s_ec].[most_recent_sql_handle]) AS [s_est]
    OUTER APPLY
        sys.dm_exec_query_plan ([s_er].[plan_handle]) AS [s_eqp]
    where [s_tdt].[database_transaction_begin_time] is not null
    ORDER BY
        [Begin Time] ASC;
    

    https://www.brentozar.com/archive/2018/02/set-implicit_transactions-one-hell-bad-idea/

    • 4
  5. T.S.
    2019-01-04T13:04:55+08:002019-01-04T13:04:55+08:00

    "Quando tento exibir as árvores de hierarquia para tabelas, exibições ou procedimentos no SSMS Object Explorer, o período de tempo limite da solicitação de bloqueio é excedido."

    Eu tive exatamente o mesmo problema. Fui até a janela de execução da consulta e; declaração digitada e executada ROLLBACK.

    Parece que algumas das séries de instruções que eu estava executando antes disso mantinham transações abertas. Especificamente, porque alguns deles eram instruções DDL. Uma vez que eu emiti o rollback, as hierarquias de objetos começaram a funcionar.

    • 2
  6. Francesco Mantovani
    2022-01-07T05:01:48+08:002022-01-07T05:01:48+08:00

    No meu caso, era alguém executando uma transação com BEGIN TRANmas não ROLLBACKou COMMIT.

    A transação estava bloqueando as tabelas do sistema.

    Estes são os comandos que me ajudaram a depurar e resolver o problema:

    -- Find the open transactoin
    DBCC opentran()
    
    -- Check the details of the query and the query plan
    exec sp_who2 129
    exec sp_lock 129
    exec sp_WhoIsActive @get_plans = 1, @get_transaction_info = 1
    
    -- Kill the process
    Kill 129
    
    • 2
  7. NotMe
    2012-08-29T13:24:32+08:002012-08-29T13:24:32+08:00

    Há tantas coisas que isso pode acontecer que tudo o que posso oferecer são algumas perguntas para ajudar a guiá-lo em direção a uma resposta.

    1. O banco de dados em um servidor dedicado apenas à execução do SQL Server? Caso contrário, outros processos podem estar interferindo, roubando tempo precioso do processador.

    2. O servidor de banco de dados está essencialmente sem memória? O SQL Server tentará alocar cada byte que puder, mas se estiver na capacidade máxima e suas consultas exigirem que mais dados sejam carregados, ele terá que recorrer ao uso de memória virtual, o que aumenta radicalmente a quantidade de tempo que até mesmo consultas simples podem levar.

    3. A largura de banda da rede do servidor de banco de dados é pequena para lidar com a transferência de dados em tempo hábil?


    No final do dia, parece que a máquina na qual você está hospedando o SQL Server está subdimensionada para o que você está tentando fazer. É perfeitamente possível que você finalmente tenha atingido os limites de hardware em que o desempenho está caindo radicalmente. Se esse for o caso (as perguntas acima ajudarão você a determinar isso), convém mover o banco de dados para um servidor que seja dimensionado adequadamente para a quantidade de dados (e consultas) que você está tentando processar.

    Isso pode significar usar processadores mais rápidos, unidades mais rápidas ou apenas instalar mais RAM.

    • 1
  8. Cryptc
    2020-10-13T09:41:50+08:002020-10-13T09:41:50+08:00

    Eu tive esse erro pop-up após a conclusão de uma operação de redução de banco de dados (mas não liberei o espaço). Para fixar isso:

    1. CHECKPOINT (demorou um pouco para ser executado)
    2. Reduza o arquivo novamente com "Liberar espaço não utilizado".
    • -1
  9. Sandeep Iyer
    2022-10-13T00:40:04+08:002022-10-13T00:40:04+08:00

    Eu tive um problema em que, após atualizar o procedimento armazenado, a atualização não estava sendo salva e, ao tentar acessar novamente, estava recebendo essa mensagem de erro que o tempo limite da solicitação de bloqueio excedeu, simplesmente desmarquei a transação Set implícita e isso funcionou para mim

    • -2

relate perguntas

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Quanto "Padding" coloco em meus índices?

  • Existe um processo do tipo "práticas recomendadas" para os desenvolvedores seguirem para alterações no banco de dados?

  • Como determinar se um Índice é necessário ou necessário

  • Downgrade do SQL Server 2008 para 2005

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como ver a lista de bancos de dados no Oracle?

    • 8 respostas
  • Marko Smith

    Quão grande deve ser o mysql innodb_buffer_pool_size?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    restaurar a tabela do arquivo .frm e .ibd?

    • 10 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Como selecionar a primeira linha de cada grupo?

    • 6 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    pedrosanta Listar os privilégios do banco de dados usando o psql 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    bernd_k Quando devo usar uma restrição exclusiva em vez de um índice exclusivo? 2011-01-05 02:32:27 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve