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 e Segurança
Para realizar a exibição do Log de Diagnóstico, usando: SQL Server Management Studio e Transact-SQL
Para configurar as definições do Log de Diagnóstico, usando: Transact-SQL
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:
No menu Arquivo , selecione Abrir, Arquivoe escolha o arquivo de log de diagnóstico a ser exibido.
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 .
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.
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;