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 / 331353
Accepted
Stefano Ambrogi
Stefano Ambrogi
Asked: 2023-09-19 19:11:00 +0800 CST2023-09-19 19:11:00 +0800 CST 2023-09-19 19:11:00 +0800 CST

Erro VSSSQLwriter

  • 772

Tenho um servidor SQl 2019 em um núcleo padrão do Windows Server 2019, gerencio dois tipos de backup, um com planos de manutenção e outro com Veeam Backup. Os planos de manutenção estão ok, o backup com Veeam falha todos os dias com erro no SQL deixando o SQLServerWriter no estado Failed com último erro Erro não repetível. Abri um ticket no suporte da Veeam e lamentamos o log de variação e o problema não estava relacionado à Veeam porque mesmo criando backup com o comando vss há erros. De acordo com os logs, a tarefa de backup falha com o erro:

[11.09.2023 00:07:12] <01> Error Failed to create snapshot: Backup job failed.  
[11.09.2023 00:07:12] <01> Error Cannot create a shadow copy of the volumes containing writer's data.  
[11.09.2023 00:07:12] <01> Error A VSS critical writer has failed. Writer name: [SqlServerWriter].

Nos gravadores VSS, o erro pode ser observado:

Writer name: 'SqlServerWriter'  
Writer Id: {a65faa63-5ea8-4ebc-9dbd-a0c4db26912a}  
Writer Instance Id: {1fb6de2a-c593-45c2-b592-e90ff6aad393}  
State: [8] Failed  
Last error: Non-retryable error 

Os seguintes erros podem ser observados nos eventos de aplicativos do Windows:

Log Name: Application  
Source: SQLWRITER  
Date: 11.09.2023 0:07:05  
Event ID: 24583  
Task Category: None  
Level: Error  
Keywords: Classic  
User: N/A  
Computer: SQL03Core  
Description:  
Sqllib error: OLEDB Error encountered calling ICommandText::Execute. hr = 0x80040e14.   SQLSTATE: 42000, Native Error: 3013  
Error state: 1, Severity: 16  
Source: Microsoft SQL Server Native Client 11.0  
Error message: BACKUP DATABASE is terminating abnormally.  
SQLSTATE: 42000, Native Error: 3224  
Error state: 1, Severity: 16  
Source: Microsoft SQL Server Native Client 11.0  
Error message: Cannot create worker thread.  

Log Name: Application  
Source: SQLWRITER  
Date: 11.09.2023 0:07:05  
Event ID: 24583  
Task Category: None  
Level: Error  
Keywords: Classic  
User: N/A  
Computer: SQL03Core  
Description:  
Sqllib error: OLEDB Error encountered calling ICommandText::Execute. hr = 0x80040e14.   SQLSTATE: 42000, Native Error: 3013  
Error state: 1, Severity: 16  
Source: Microsoft SQL Server Native Client 11.0  
Error message: BACKUP DATABASE is terminating abnormally.  
SQLSTATE: 42000, Native Error: 3202  
Error state: 1, Severity: 16  
Source: Microsoft SQL Server Native Client 11.0  
Error message: Write on "{7F86B757-DC6E-4B76-B35D-F382797EB665}414" failed: 995(The I/O operation has been aborted because of either a thread exit or an application request.) 

O servidor possui 536 bancos de dados e 8 núcleos, então o suporte da Veeam supõe que o problema estava relacionado a um número insuficiente de threads de trabalho, portanto de acordo com https://learn.microsoft.com/en-us/sql/database-engine /configure-windows/configure-the-max-worker-threads-server-configuration-option?view=sql-server-ver16 , alteramos o número de threads de trabalho para 1000, mas os erros continuam aumentando, então o suporte da Veeam sugere contar com ajuda para otimizar máquina e rosca de acordo com a carga.

Alguém pode sugerir uma maneira de proceder? Desculpe pelo meu inglês ruim e desde já agradeço... Stefano

performance
  • 1 1 respostas
  • 21 Views

1 respostas

  • Voted
  1. Best Answer
    John K. N.
    2023-09-19T23:09:14+08:002023-09-19T23:09:14+08:00

    A realização de um instantâneo de um sistema acionará vários subsistemas no servidor de destino, conforme explicado abaixo.

    1. No seu caso, a Veeam acionará o serviço Volume Shadow Copy (também conhecido como VSS Writer) no nível do sistema operacional.
    2. Como o serviço SQL Server VSS Writer está registrado no sistema operacional, o sistema operacional informará ao serviço SQL Server VSS Writer que um instantâneo do sistema está prestes a ser executado.
    3. O serviço SQL Server VSS Writer congelará todas as E/S do banco de dados e reportará ao serviço Volume Shadow Copy que todas as E/S foram congeladas no nível do SQL Server.
    4. A cópia de sombra de volume congelará todas as E/S no nível do sistema operacional e reportará à Veeam que todas as E/S foram congeladas.
    5. A Veeam então executará um snapshot do sistema em nível de bloco (disco).
    6. O instantâneo será armazenado no histórico de backup do SQL Server como um backup is_snapshot .

    Quando um instantâneo de uma instância do SQL Server for executado, ele deverá aparecer no arquivo ERRORLOG do SQL Server semelhante ao seguinte:

    2023-09-17 18:04:45.99 spid54      I/O is frozen on database model. No user action is required. However, if I/O is not resumed promptly, you could cancel the backup.
    2023-09-17 18:04:45.99 spid57      I/O is frozen on database msdb. No user action is required. However, if I/O is not resumed promptly, you could cancel the backup.
    [...]
    2023-09-17 18:04:45.99 spid63      I/O is frozen on database master. No user action is required. However, if I/O is not resumed promptly, you could cancel the backup.
    [...]
    2023-09-17 18:04:50.75 spid63      I/O was resumed on database master. No user action is required.
    2023-09-17 18:04:50.76 spid54      I/O was resumed on database model. No user action is required.
    [...]
    2023-09-17 18:04:50.77 spid57      I/O was resumed on database msdb. No user action is required.
    

    Isso é um sinal de que o gravador VSS do SQL Server foi notificado com êxito sobre o instantâneo e, após a execução do instantâneo, ele descongela toda a E/S novamente para que as transações possam ser gravadas nos arquivos do banco de dados.

    Como é o seu ERRORLOG?

    Respondendo sua pergunta

    Alguém pode sugerir uma maneira de proceder?

    Aumentar a quantidade de threads de trabalho

    A Microsoft tem uma recomendação para aumentar os threads de trabalho:

    No SQL Server, o backup de instantâneo de cada banco de dados usa cinco threads no processo Sqlservr.exe. Além disso, outras atividades também podem usar threads no processo Sqlservr.exe. Dependendo da configuração do SQL Server, os threads disponíveis poderão ser esgotados se você criar um backup de instantâneo de vários bancos de dados ao mesmo tempo.

    ...e...

    Gambiarra

    • Para contornar esse problema, crie um backup instantâneo de menos bancos de dados ao mesmo tempo.
    • Se você estiver executando uma versão de 64 bits do SQL Server, considere aumentar a opção de configuração Max Worker Threads. Não é recomendado alterar essa configuração em uma versão de 32 bits do SQL Server.

    Referência: Erro ao criar um backup de instantâneo de vários bancos de dados ao mesmo tempo no SQL Server (Microsoft Learn | SQL)

    Então você teria que quintuplicar a quantidade de threads de trabalho: 5 * 536 = 2680( pelo menos!! )

    É necessária uma reinicialização.

    Pergunte à Microsoft

    Se você tiver um Contrato de Suporte da Microsoft, peça suporte à Microsoft.

    Backups de instantâneos da Veeam

    Não os use... Bem, você já tem backups FULL, (DIFF) e TLOG, então por que se esforçar para ter backups de snapshots da Veeam adicionais que você só pode usar para aquele momento específico?

    Daqui para frente

    Talvez você queira considerar a redução da quantidade de banco de dados por instância do SQL Server. Ou realmente criando novos SQL Servers e distribuindo a carga.

    • 0

relate perguntas

  • Existe um ganho de desempenho ao manipular dados com procedimentos armazenados em vez de alimentá-los em funções após a recuperação?

  • Como você ajusta o MySQL para uma carga de trabalho pesada do InnoDB?

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

  • Onde posso encontrar o log lento do mysql?

  • Como posso otimizar um mysqldump de um banco de dados grande?

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