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 / 207602
Accepted
Thomas Franz
Thomas Franz
Asked: 2018-05-24 00:56:01 +0800 CST2018-05-24 00:56:01 +0800 CST 2018-05-24 00:56:01 +0800 CST

Gravidade 20 - Erro fatal no CURSOR LOCAL após FETCH

  • 772

Esta semana, nosso banco de dados em um servidor SQL2014 SP2 CU11 começou a gerar erros fatais (gravidade 20), na instrução de código FETCH, que pode ser reduzido para:

DECLARE @dummy int
DECLARE CurName CURSOR LOCAL FOR
        SELECT TOP (1) t.id FROM dbo.t_table AS t;
OPEN CurName;

WHILE 1 = 1
BEGIN
    FETCH NEXT FROM CurName INTO @dummy;
    IF @@fetch_status <> 0 BREAK;
    PRINT @dummy
END;

DBCC CHECKTABLE e DBCC CHECKDB não encontraram nenhum problema, uma reinicialização do servidor não ajudou (e como ocorreu em várias versões do mesmo banco de dados ao mesmo tempo, era muito improvável que isso fosse um problema de estrutura de banco de dados).

Em um servidor de desenvolvimento com SQL2014 SP2 e apenas CU6, as mesmas instruções são executadas sem problemas (em um SQL2017 Server também funciona).

A mesa

  • tem cerca de 4 milhões de linhas
  • é particionado por uma coluna inteira
  • tem um PK clusterizado em duas colunas (a coluna de partição mais um bigint)
  • tem 25 índices (eu acho, eu deveria limpar um pouco :-))
sql-server-2014 cursors
  • 1 1 respostas
  • 76 Views

1 respostas

  • Voted
  1. Best Answer
    Thomas Franz
    2018-05-24T00:56:01+08:002018-05-24T00:56:01+08:00

    Primeira solução: Quando alterei a declaração CURSOR para

    DECLARE CurName CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR ...
    

    (ou pelo menos adicionou a palavra-chave STATIC), ele funciona bem.

    Solução final: A tabela tinha uma coluna de geometria e uma de geografia, que foram descartadas neste fim de semana (juntamente com os dois índices espaciais correspondentes).

    Como essa foi a única alteração nessa tabela, decidi reconstruir o índice de chave primária clusterizada, o que resolveu esse problema.

    Parece que o SP2 CU11 no SQL2014 tem um pequeno bug neste caso especial, então talvez alguém com um problema semelhante ache esta solução útil ...

    • 1

relate perguntas

  • Arquitetura interna de cursores

  • Bug na criação da função PL/pgSQL

  • Por que este proc do MySQL usando cursores não recupera resultados?

  • Declarando o cursor para fazer um loop sobre alguns valores no SQL Server 2008 R2

  • Quando abrir o cursor MySQL

Sidebar

Stats

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

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 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

    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
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • 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
    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

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