Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:PDW (Analytics Platform System)
As sessões de diagnóstico permitem que você salve informações detalhadas de diagnóstico definidas pelo usuário sobre o desempenho do sistema ou da consulta.
As sessões de diagnóstico normalmente são usadas para depurar o desempenho de uma consulta específica ou para monitorar o comportamento de um componente de dispositivo específico durante a operação do dispositivo.
Note
Você deve estar familiarizado com XML para usar sessões de diagnóstico.
Syntax
-- Creating a new diagnostics session:
CREATE DIAGNOSTICS SESSION diagnostics_name AS N' { <session_xml> } ';
<session_xml>::
<Session>
[ <MaxItemCount>max_item_count_num</MaxItemCount> ]
[ <Filter>
{ <Event Name = "event_name"/>
[ <Where><filter_property_name Name = "value" ComparisonType = "comp_type"/></Where> ] [ , ...n ]
} [ , ...n ]
</Filter> ]
<Capture>
<Property Name = "property_name"/> [ , ...n ]
</Capture>
<Session>
-- Retrieving results for a diagnostics session:
SELECT * FROM master.sysdiag.diagnostics_name ;
-- Removing results for a diagnostics session:
DROP DIAGNOSTICS SESSION diagnostics_name ;
Argumentos
diagnostics_name
O nome da sessão de diagnóstico. Os nomes de sessão de diagnóstico podem incluir apenas caracteres a-z, A-Z e 0-9. Além disso, os nomes de sessão de diagnóstico devem começar com um caractere. diagnostics_name é limitado a 127 caracteres.
max_item_count_num
O número de eventos a serem persistidos em um modo de exibição. Por exemplo, se 100 for especificado, os 100 eventos mais recentes que correspondem aos critérios de filtro serão mantidos na sessão de diagnóstico. Se forem encontrados menos de 100 eventos correspondentes, a sessão de diagnóstico conterá menos de 100 eventos. max_item_count_num deve ser pelo menos 100 e menor ou igual a 100.000.
event_name
Define os eventos reais a serem coletados na sessão de diagnóstico.
event_name é um dos eventos listados em sys.pdw_diag_events em que sys.pdw_diag_events.is_enabled='True'.
filter_property_name
O nome da propriedade na qual restringir os resultados. Por exemplo, se você quiser limitar com base na ID da sessão, filter_property_name deverá ser SessionId. Consulte o argumento property_name para obter uma lista de valores potenciais para filter_property_name.
valor
Um valor a ser avaliado em relação a filter_property_name. O tipo de valor deve corresponder ao tipo de propriedade. Por exemplo, se o tipo de propriedade for decimal, o tipo de valor deverá ser decimal.
comp_type
O tipo de comparação. Os valores potenciais são: Equals, , EqualsOrGreaterThan, EqualsOrLessThan, GreaterThan, LessThan, , NotEquals, Containse RegEx.
property_name
Uma propriedade relacionada ao evento. Os nomes de propriedade podem fazer parte da marca de captura ou usados como parte dos critérios de filtragem.
| Nome da propriedade | Description |
|---|---|
UserName |
Um nome de usuário (logon). |
SessionId |
Uma ID de sessão. |
QueryId |
Uma ID de consulta. |
CommandType |
Um tipo de comando. |
CommandText |
Texto em um comando processado. |
OperationType |
O tipo de operação do evento. |
Duration |
A duração do evento. |
SPID |
A ID da sessão. |
Remarks
Cada usuário tem um máximo de 10 sessões de diagnóstico simultâneas. Consulte sys.pdw_diag_sessions para obter uma lista das sessões atuais e descartar as sessões desnecessárias usando DROP DIAGNOSTICS SESSION.
As sessões de diagnóstico continuam coletando metadados até serem descartadas.
Permissions
Requer a permissão ALTER SERVER STATE.
Bloqueio
Usa um bloqueio compartilhado na tabela Sessões de Diagnóstico.
Examples
A. Criar uma sessão de diagnóstico
Este exemplo cria uma sessão de diagnóstico para registrar métricas do desempenho do mecanismo de banco de dados. O exemplo cria uma sessão de diagnóstico que escuta eventos de execução/término da Consulta do Mecanismo e um evento DMS de bloqueio. O que é retornado é o texto do comando, o nome do computador, a ID da solicitação (ID da consulta) e a sessão na qual o evento foi criado.
CREATE DIAGNOSTICS SESSION MYDIAGSESSION AS N'
<Session>
<MaxItemCount>100</MaxItemCount>
<Filter>
<Event Name="EngineInstrumentation:EngineQueryRunningEvent" />
<Event Name="DmsCoreInstrumentation:DmsBlockingQueueEnqueueBeginEvent" />
<Where>
<SessionId Value="381" ComparisonType="NotEquals" />
</Where>
</Filter>
<Capture>
<Property Name="Query.CommandText" />
<Property Name="MachineName" />
<Property Name="Query.QueryId" />
<Property Name="Alias" />
<Property Name="Duration" />
<Property Name="Session.SessionId" />
</Capture>
</Session>';
Após a criação da sessão de diagnóstico, execute uma consulta.
SELECT COUNT(EmployeeKey)
FROM AdventureWorksPDW2012..FactSalesQuota;
Em seguida, exiba os resultados da sessão de diagnóstico selecionando no esquema sysdiag.
SELECT * FROM master.sysdiag.MYDIAGSESSION;
O esquema sysdiag contém uma exibição que é chamada de nome da sessão de diagnóstico.
Para ver apenas a atividade da conexão, adicione a Session.SPID propriedade e adicione WHERE [Session.SPID] = @@spid; à consulta.
Quando terminar a sessão de diagnóstico, solte-a usando o DROP DIAGNOSTICS comando.
DROP DIAGNOSTICS SESSION MYDIAGSESSION;
B. Sessão de diagnóstico alternativa
Um segundo exemplo com propriedades ligeiramente diferentes.
-- Determine the session_id of your current session
SELECT TOP 1 session_id();
-- Replace <session_number> in the code below with the numbers in your session_id
CREATE DIAGNOSTICS SESSION PdwOptimizationDiagnostics AS N'
<Session>
<MaxItemCount>100</MaxItemCount>
<Filter>
<Event Name="EngineInstrumentation:MemoGenerationBeginEvent" />
<Event Name="EngineInstrumentation:MemoGenerationEndEvent" />
<Event Name="DSQLInstrumentation:OptimizationBeginEvent" />
<Event Name="DSQLInstrumentation:OptimizationEndEvent" />
<Event Name="DSQLInstrumentation:BuildRelOpContextTreeBeginEvent" />
<Event Name="DSQLInstrumentation:PostPlanGenModifiersEndEvent" />
<Where>
<SessionId Value="<session_number>" ComparisonType="Equals" />
</Where>
</Filter>
<Capture>
<Property Name="Session.SessionId" />
<Property Name="Query.QueryId" />
<Property Name="Query.CommandText" />
<Property Name="Name" />
<Property Name="DateTimePublished" />
<Property Name="DateTimePublished.Ticks" />
</Capture>
</Session>';
Execute uma consulta, como:
USE ssawPDW;
GO
SELECT * FROM dbo.FactFinance;
A consulta a seguir retorna o tempo de autorização:
SELECT *
FROM master.sysdiag.PdwOptimizationDiagnostics
ORDER BY DateTimePublished;
Quando terminar a sessão de diagnóstico, solte-a usando o DROP DIAGNOSTICS comando.
DROP DIAGNOSTICS SESSION PdwOptimizationDiagnostics;