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 / 345952
Accepted
J. Mini
J. Mini
Asked: 2025-03-29 07:48:31 +0800 CST2025-03-29 07:48:31 +0800 CST 2025-03-29 07:48:31 +0800 CST

CHECKDB funciona em um secundário legível da Enterprise Edition, mas não em CHECKCATALOG

  • 772

Tenho um cluster do SQL Server 2022 Enterprise Edition com vários AGs.

Dois dos AGs consideram diferentes instâncias primárias. Ambos consideram suas secundárias legíveis e estão corretos em pensar assim.

Além de estar nessa configuração secundária legível, nada torna nenhum dos bancos de dados em nenhuma das instâncias somente leitura. Eles não são Grupos de Disponibilidade Básica.

Aqui está o choque: quando executo DBCC CHECKCATALOGa segmentação de um banco de dados secundário legível enquanto estou conectado a uma instância que não é o primário desse banco de dados, a consulta falha assim

Msg 3906, Nível 16, Estado 8, Linha 1

Falha ao atualizar o banco de dados "DB NAME" porque o banco de dados é somente leitura.

mas DBCC CHECKDBfunciona muito bem!

Procurei muito, mas não encontrei nada útil sobre isso.

  • Este problema no GitHub da Solução de Manutenção de Ola Hallengren é idêntico, mas não tem solução. Ola, em quem confio ser um especialista nisso, parece pensar que é um bug dele e não da Microsoft.
  • Este commit do git sugere que seu autor, dan-andreistefan, já viu isso antes. Não encontrei nenhum problema ou PR correspondente. Dan surgiu do vazio e resolveu o problema .
  • Além das limitações em BAGs, não consigo encontrar nada na documentação oficial do SQL Server sobre fazer verificações de integridade em AGs. Está apenas no guia de licenciamento.

Como posso depurar isso? Por que DBCC CHECKDB, que é um superconjunto de DBCC CHECKCATALOG, funcionaria onde DBCC CHECKCATALOGfalha?

sql-server
  • 1 1 respostas
  • 67 Views

1 respostas

  • Voted
  1. Best Answer
    Sean Gallardy
    2025-03-30T07:48:31+08:002025-03-30T07:48:31+08:00

    Procurei muito, mas não encontrei nada útil sobre isso.

    Concordo que a documentação não é muito boa sobre isso.

    Como posso depurar isso?

    Há vários lugares para começar: testar várias versões para ver se há uma versão principal ou diferença de CU, configurar sessões de eventos estendidas, um criador de perfil se você preferir isso ao XE, um depurador real, etc.

    Por que o DBCC CHECKDB, que é um superconjunto do DBCC CHECKCATALOG, funcionaria onde o DBCC CHECKCATALOG falha?

    Este não é tão interessante quanto parece. Sim, logicamente CHECKCATALOGé executado como parte de CHECKDB, no entanto, não há nada afirmando que os mesmos caminhos de código devem ser tomados.

    Por exemplo, CHECKCATALOGfuncionará perfeitamente no SQL Server 2016, mas não funcionará no SQL Server 2017. Não há documentação oficial afirmando que CHECKCATALOGfuncionará, na maioria das vezes, apenas CHECKDBfunciona CHECKDB.

    Em versões mais recentes do SQL Server, aquelas que têm hekaton, havia um item que parecia ser adicionado ao caminho do código na CHECKCATALOGinvocação específica que não existe no CHECKDBcaminho do código; ele tenta alterar fisicamente o banco de dados, e é por isso que ocorre o erro sobre falha na atualização do banco de dados.

    A resposta é porque eles usam dois caminhos de código diferentes, dependendo de qual item é invocado, onde um caminho de código tem alguns itens diferentes, o que inibe o uso em um banco de dados somente leitura.

    sqldk!ex_raise
    sqlmin!CleanupHkLob::Init
    sqlmin!DbccCleanupHkLob
    sqlmin!DbccCheckCatalog
    sqllang!DbccCommand::Execute
    sqllang!CStmtDbcc::XretExecute
    sqllang!CExecStmtLoopVars::ExecuteXStmtAndSetXretReturn
    sqllang!CMsqlExecContext::ExecuteStmts
    sqllang!CMsqlExecContext::FExecute
    sqllang!CSQLSource::Execute
    

    O CheckdB foi oficialmente mencionado no TechCommunity Blogs .

    • 5

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

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

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

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