Partilhar via


Usar a sessão "system_health"

Aplica-se a:SQL ServerAzure SQL Managed Instance

A system_health sessão é uma sessão de Eventos Estendidos incluída por padrão no SQL Server e na Instância Gerenciada SQL do Azure. Esta sessão é iniciada automaticamente quando o Mecanismo de Banco de Dados é iniciado e é executada sem qualquer sobrecarga de desempenho percetível. A sessão coleta dados do sistema que você pode usar para ajudar a solucionar problemas de desempenho no Mecanismo de Banco de Dados.

Importante

Recomendamos que não pare, altere ou elimine a system_health sessão. Quaisquer alterações feitas nas configurações da system_health sessão podem ser substituídas por uma atualização futura do produto.

A sessão recolhe informações que incluem as seguintes informações:

  • O sql_text e session_id para todas as sessões que encontrarem um erro que tenha uma gravidade >= 20.
  • O sql_text e o session_id para quaisquer sessões que encontrem um erro relacionado à memória. Os erros incluem 17803, 701, 802, 8645, 8651, 8657 e 8902.
  • Um registro de quaisquer problemas de agendamento não produtivos. Eles aparecem no log de erros do SQL Server como erro 17883.
  • Quaisquer impasses detetados, incluindo o gráfico de deadlock.
  • callstack, sql_text e session_id para quaisquer sessões que tenham esperado em latches (ou outros recursos relevantes) por > 15 segundos.
  • O callstack, sql_text, e session_id para quaisquer sessões que tenham esperado em bloqueios por > 30 segundos.
  • O callstack, sql_text e session_id para quaisquer sessões que tenham esperado muito tempo por esperas preemptivas. A duração varia de acordo com o tipo de espera. Uma espera preventiva é quando o SQL Server está aguardando chamadas de API externas.
  • Os callstack e session_id em caso de falhas na alocação CLR e na alocação virtual.
  • Os eventos do buffer de anel para o gestor de memória, monitor do agendador, memória esgotada (OOM) do nó, segurança e conectividade.
  • O componente do sistema resulta de sp_server_diagnostics.
  • Estado de saúde da instância recolhido pelo scheduler_monitor_system_health_ring_buffer_recorded.
  • Falhas de alocação no CLR.
  • Erros de conectividade usando connectivity_ring_buffer_recorded.
  • Erros de segurança usando security_error_ring_buffer_recorded.

Observação

Para obter mais informações sobre deadlocks, consulte o guia Deadlocks. Para obter mais informações sobre mensagens de erro SQL, consulte Eventos e erros do Mecanismo de Banco de Dados.

Ver os dados da sessão system_health

A sessão usa o destino do buffer de anel e o destino do arquivo de eventos para armazenar os dados. O destino do arquivo de evento é configurado com um tamanho máximo de 5 MB e uma política de retenção de arquivos de 4 arquivos. Nas edições Standard e Enterprise do SQL Server, o destino do arquivo de evento aumentou os limites: um tamanho máximo de 100 MB e uma política de retenção de arquivos de 10 arquivos.

Para visualizar os dados do destino do buffer de anel com a interface de utilizador dos Eventos Estendidos disponível no SQL Server Management Studio, consulte Exibição avançada de dados de destino de eventos estendidos no SQL Server - Visualizar dados em tempo real.

Para exibir os dados da sessão do destino do buffer de anel com o Transact-SQL, use a seguinte consulta:

SELECT CAST(xet.target_data as xml) AS target_data
FROM sys.dm_xe_session_targets xet
JOIN sys.dm_xe_sessions xe
ON xe.address = xet.event_session_address
WHERE xe.name = 'system_health'

Para visualizar os dados da sessão a partir do arquivo de eventos, utilize a interface de utilizador do Visualizador de Eventos Estendidos disponível no SQL Server Management Studio. Para obter mais informações, consulte Exibir dados de eventos no SQL Server Management Studio.

Restaurar a sessão system_health

Se você excluir a system_health sessão, poderá restaurá-la executando o u_tables.sql script. Esse arquivo está localizado na seguinte pasta, onde C: representa a unidade onde você instalou os arquivos de programa do SQL Server e MSSQLnn a versão principal do SQL Server:

C:\Program Files\Microsoft SQL Server\MSSQLnn.\<instanceid>\MSSQL\Install

Depois de restaurar a sessão, você deve iniciá-la usando a ALTER EVENT SESSION instrução ou o nó Eventos estendidos no Pesquisador de Objetos. Caso contrário, a sessão será iniciada automaticamente na próxima vez que você reiniciar o serviço do SQL Server.

A sessão system_health no Azure SQL

Na Azure SQL Managed Instance, os dados da sessão podem ser exibidos clicando com o system_health botão direito do mouse no alvo event_file ou ring_buffer no Explorador de Objetos e selecionando Exibir Dados de Destino.

Não há nenhuma sessão interna de system_health Evento Estendido no Banco de Dados SQL do Azure, mas você pode usar a função para ler as sys.fn_xe_file_target_read_file() sessões de Evento Estendido que você mesmo cria e armazena no Armazenamento do Azure. Para obter uma explicação passo a passo, consulte Código de destino do Arquivo de Evento para Eventos Estendidos no Banco de Dados SQL do Azure.