Exibir e ler o log de diagnóstico da instância do cluster de failover

Aplica-se a:SQL Server

Todos os erros críticos e eventos de aviso para a DLL de Recursos do SQL Server são gravados no log de eventos do Windows. Um log em execução das informações de diagnóstico específicas do SQL Server é capturado pelo procedimento armazenado do sistema sp_server_diagnostics (Transact-SQL) e gravado nos arquivos de log de diagnóstico do cluster de failover do SQL Server (também conhecidos como logs SQLDIAG).

Antes de começar

Nome do arquivo, local e formato

Por padrão, os arquivos SQLDIAG são armazenados em uma pasta LOG local do diretório de instância do SQL Server, por exemplo, "C\Arquivos de Programas\Microsoft SQL Server\MSSQL13<InstanceName>\MSSQL\LOG" do nó proprietário da FCI (instância de cluster de failover) do Always On. O tamanho máximo de cada arquivo de log SQLDIAG é fixado em 100 MB. Dez arquivos de log desse tipo são armazenados no computador antes de serem reciclados para novos logs. O nome do arquivo tem o formato MACHINE_SQLINSTANCE_SQLDIAG_0_xxxxxxxxxxxxxxxxx.xel a seguir, em que a última parte 'xxxxxxxx' é um número gerado automaticamente. Por exemplo, o nome do arquivo seria NODE1_MSSQLSERVER_SQLDIAG_0_133177967257760000.xel para uma instância padrão e NODE1_SQL2019INST_SQLDIAG_0_133177967257760000.xel para uma instância nomeada

Os logs usam o formato de arquivo de eventos estendidos. A função do sistema sys.fn_xe_file_target_read_file pode ser usada para ler os arquivos criados por eventos estendidos e exibi-los como um conjunto de resultados. É retornado um evento, em formato XML, por linha. Para obter mais informações, confira sys.fn_xe_file_target_read_file (Transact-SQL).

Segurança

Permissões

A permissão VIEW SERVER STATE é necessária para executar fn_xe_file_target_read_file.

Abra o SQL Server Management Studio como administrador

Use SQL Server Management Studio.

Para exibir os arquivos de log de diagnóstico:

  1. No menu Arquivo , selecione Abrir, Arquivoe escolha o arquivo de log de diagnóstico a ser exibido.

  2. Os eventos são exibidos como linhas no painel direito e, por padrão, nomee carimbo de data/hora são as únicas duas colunas exibidas.

    Isso também ativa o menu ExtendedEvents .

  3. Para ver mais colunas, vá até o menu ExtendedEvents e marque Selecionar Colunas.

    Uma caixa de diálogo é aberta com as colunas disponíveis que lhe permitem selecionar as colunas para exibição.

  4. Você pode filtrar e classificar os dados de evento usando o menu ExtendedEvents e selecionando a opção Filtrar .

Exibir arquivos do log de diagnóstico com o Transact-SQL

Para exibir os arquivos de log de diagnóstico:

Para exibir todos os itens do log no arquivo de log SQLDIAG, use a seguinte consulta:

SELECT
  xml_data.value('(event/@name)[1]','varchar(max)') AS 'Name'
  ,xml_data.value('(event/@package)[1]','varchar(max)') AS 'Package'
  ,xml_data.value('(event/@timestamp)[1]','datetime') AS 'Time'
  ,xml_data.value('(event/data[@name=''state'']/value)[1]','int') AS 'State'
  ,xml_data.value('(event/data[@name=''state_desc'']/text)[1]','varchar(max)') AS 'State   Description'
  ,xml_data.value('(event/data[@name=''failure_condition_level'']/value)[1]','int') AS   'Failure Conditions'
  ,xml_data.value('(event/data[@name=''node_name'']/value)[1]','varchar(max)') AS   'Node_Name'
  ,xml_data.value('(event/data[@name=''instancename'']/value)[1]','varchar(max)') AS   'Instance Name'
  ,xml_data.value('(event/data[@name=''creation time'']/value)[1]','datetime') AS 'Creation   Time'
  ,xml_data.value('(event/data[@name=''component'']/value)[1]','varchar(max)') AS   'Component'
  ,xml_data.value('(event/data[@name=''data'']/value)[1]','varchar(max)') AS 'Data'
  ,xml_data.value('(event/data[@name=''info'']/value)[1]','varchar(max)') AS 'Info'
FROM
 ( SELECT object_name AS 'event'
  ,CONVERT(xml,event_data) AS 'xml_data'
  FROM sys.fn_xe_file_target_read_file('C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\Log\SQLNODE1_MSSQLSERVER_SQLDIAG_0_129936003752530000.xel',NULL,NULL,NULL)
 )
AS XEventData
ORDER BY Time;

Observação

Você pode filtrar os resultados para componentes específicos ou um estado usando a cláusula WHERE.

Configurar propriedades do log de diagnóstico com o Transact-SQL

Para configurar as propriedades do log de diagnóstico:

Observação

Para obter um exemplo desse procedimento, veja Exemplo (Transact-SQL), mais adiante nesta seção.

Usando a instrução DDL (Linguagem de Definição de Dados) ALTER SERVER CONFIGURATION, você pode iniciar ou parar o registro em log dos dados de diagnóstico capturados pelo procedimento sp_server_diagnostics (Transact-SQL), além de definir os parâmetros de configuração do log SQLDIAG, como a contagem de substituições de arquivos de log, o tamanho do arquivo de log e o local do arquivo. Para obter detalhes da sintaxe, consulte Setting diagnostic log options.

Exemplos (Transact-SQL)

Definir as opções do log de diagnóstico

Os exemplos desta seção mostram como definir os valores para a opção de log de diagnóstico.

a. Iniciar o registro em log do diagnóstico

O exemplo a seguir inicia o log de dados de diagnóstico.

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG ON;
B. Parar o registro em log do diagnóstico

O exemplo a seguir interrompe o log de dados de diagnóstico.

ALTER SERVER CONFIGURATION SET DIAGNOSTICS LOG OFF;
C. Especificar a localização dos logs de diagnóstico

O exemplo a seguir define o local dos logs de diagnóstico como o caminho do arquivo especificado.

ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG PATH = 'C:\logs';
D. Especificar o tamanho máximo de cada log de diagnóstico

O exemplo a seguir define o tamanho máximo de cada log de diagnóstico como 10 megabytes.

ALTER SERVER CONFIGURATION
SET DIAGNOSTICS LOG MAX_SIZE = 10 MB;
E. Verifique se o Log de Diagnóstico de Instância de Cluster de Failover está habilitado e se a configuração está atualizada.

O exemplo a seguir usa sys.dm_os_server_diagnostics_log_configurations do dmv para verificar a configuração atual

SELECT is_enabled, [path], max_size, max_files
FROM sys.dm_os_server_diagnostics_log_configurations;

Confira também