Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
O driver ODBC do SQL Server Native Client pode criar o perfil de dois tipos de dados de desempenho:
Consultas de execução longa.
O driver pode gravar em um arquivo de log qualquer consulta que não obtenha uma resposta do servidor dentro de um período especificado. Os programadores de aplicativos ou administradores de banco de dados podem pesquisar cada instrução SQL registrada para determinar como eles podem melhorar seu desempenho.
Dados de desempenho do driver.
O driver pode registrar estatísticas de desempenho e gravá-las em um arquivo ou disponibilizá-las para um aplicativo por meio de uma estrutura de dados específica do driver chamada SQLPERF. O arquivo que contém as estatísticas de desempenho é um arquivo delimitado por tabulação que pode ser facilmente analisado com qualquer planilha que dê suporte a arquivos delimitados por tabulação, como o Microsoft Excel.
Qualquer tipo de criação de perfil pode ser ativado por:
Conectando-se a uma fonte de dados que especifica o registro em log.
Chamando SQLSetConnectAttr para definir atributos específicos do driver que controlam a criação de perfil.
Cada processo de aplicativo obtém sua própria cópia do driver ODBC do SQL Server Native Client e a criação de perfil é global para a combinação de uma cópia de driver e um processo de aplicativo. Quando qualquer coisa no aplicativo ativa a criação de perfil, a criação de perfil registra informações para todas as conexões ativas no driver desse aplicativo. Até mesmo conexões que não chamaram especificamente para criação de perfil estão incluídas.
Depois que o driver abrir um log de criação de perfil (os dados de desempenho ou o log de consultas de execução prolongada), ele não fechará o log até que o driver seja descarregado pelo Gerenciador de Driver ODBC, quando um aplicativo libera todo o ambiente que o manipula aberto no driver. Se o aplicativo abrir um novo identificador de ambiente, uma nova cópia do driver será carregada. Se o aplicativo se conectar a uma fonte de dados que especifica o mesmo arquivo de log ou definir os atributos específicos do driver para fazer logon no mesmo arquivo, o driver substituirá o log antigo.
Se um aplicativo iniciar a criação de perfil para um arquivo de log e um segundo aplicativo tentar iniciar a criação de perfil para o mesmo arquivo de log, o segundo aplicativo não poderá registrar nenhum dado de criação de perfil. Se o segundo aplicativo iniciar a criação de perfil depois que o primeiro aplicativo descarregar seu driver, o segundo aplicativo substituirá o arquivo de log do primeiro aplicativo.
Se um aplicativo se conectar a uma fonte de dados que tenha a criação de perfil habilitada, o driver retornará SQL_ERROR se o aplicativo chamar SQLSetConnectOption para iniciar o registro em log. Uma chamada para SQLGetDiagRec retorna o seguinte:
SQLState: 01000, pfNative = 0
ErrorMsg: [Microsoft][SQL Server Native Client]
An error has occurred during the attempt to access
the log file, logging disabled.
O driver para de coletar dados de desempenho quando um identificador de ambiente é fechado. Se um aplicativo SQL Server Native Client tiver várias conexões, cada uma com seu próprio identificador de ambiente, o driver interromperá a coleta de dados de desempenho quando qualquer um dos identificadores de ambiente associados for fechado.
Os dados de desempenho do driver podem ser armazenados na estrutura de dados SQLPERF ou registrados em um arquivo delimitado por tabulação. Os dados incluem as seguintes categorias de estatísticas:
Perfil do aplicativo
Conexão
Rede
Hora
Na tabela a seguir, as descrições dos campos na estrutura de dados SQLPERF também se aplicam às estatísticas registradas no arquivo de log de desempenho.
Estatísticas de perfil de aplicativo
| Campo SQLPERF | Descrição |
|---|---|
| TimerResolution | Resolução mínima do tempo de relógio do servidor em milissegundos. Isso geralmente é relatado como 0 (zero) e só deve ser considerado se o número relatado for grande. Se a resolução mínima do relógio do servidor for maior do que o intervalo provável para algumas das estatísticas baseadas em temporizador, essas estatísticas poderão ser infladas. |
| SQLidu | Número de instruções INSERT, DELETE ou UPDATE após SQL_PERF_START. |
| SQLiduRows | Número de instruções INSERT, DELETE ou UPDATE após SQL_PERF_START. |
| SQLSelects | Número de instruções SELECT processadas após SQL_PERF_START. |
| SQLSelectRows | Número de linhas selecionadas após SQL_PERF_START. |
| Transações | Número de transações de usuário após SQL_PERF_START, incluindo reversões. Quando um aplicativo ODBC está em execução com SQL_AUTOCOMMIT_ON, cada comando é considerado uma transação. |
| SQLPrepares | Número de chamadas de função SQLPrepare após SQL_PERF_START. |
| ExecDirects | Número de chamadas SQLExecDirect após SQL_PERF_START. |
| SQLExecutes | Número de chamadas SQLExecute após SQL_PERF_START. |
| CursorOpens | Número de vezes que o driver abriu um cursor de servidor após SQL_PERF_START. |
| CursorSize | Número de linhas nos conjuntos de resultados abertos por cursores após SQL_PERF_START. |
| CursorUsed | O número de linhas realmente recuperadas por meio do driver de cursores após SQL_PERF_START. |
| PercentCursorUsed | É igual a CursorUsed/CursorSize. Por exemplo, se um aplicativo fizer com que o driver abra um cursor de servidor para fazer "SELECT COUNT(*) FROM Authors", 23 linhas estarão no conjunto de resultados da instrução SELECT. Se o aplicativo buscar apenas três dessas linhas, CursorUsed/CursorSize será 3/23, portanto, PercentCursorUsed será 13,043478. |
| AvgFetchTime | É igual a SQLFetchTime/SQLFetchCount. |
| AvgCursorSize | É igual a CursorSize/CursorOpens. |
| AvgCursorUsed | É igual a CursorUsed/CursorOpens. |
| SQLFetchTime | Período cumulativo de tempo necessário para a conclusão de buscas em cursores de servidor. |
| SQLFetchCount | Número de buscas feitas em cursores de servidor após SQL_PERF_START. |
| CurrentStmtCount | Número de identificadores de instrução abertos no momento em todas as conexões abertas no driver. |
| MaxOpenStmt | Número máximo de identificadores de instrução abertos simultaneamente após SQL_PERF_START. |
| SumOpenStmt | Número de identificadores de instrução que foram abertos após SQL_PERF_START. |
| Estatísticas de conexão: | |
| CurrentConnectionCount | O número atual de identificadores de conexão ativos que o aplicativo abriu para o servidor. |
| MaxConnectionsOpened | Número máximo de identificadores de conexão simultâneos abertos após SQL_PERF_START. |
| SumConnectionsOpened | Soma do número de identificadores de conexão que foram abertos após SQL_PERF_START. |
| SumConnectionTime | Soma do tempo que todas as conexões foram abertas após SQL_PERF_START. Por exemplo, se um aplicativo abriu 10 conexões e manteve cada conexão por 5 segundos, o SumConnectionTime seria de 50 segundos. |
| AvgTimeOpened | É igual a SumConnectionsOpened/SumConnectionTime. |
| Estatísticas de Rede: | |
| ServerRndTrips | O número de vezes que o driver enviou comandos para o servidor e recebeu uma resposta de volta. |
| BuffersSent | Número de pacotes TDS (Fluxo de Dados Tabulares) enviados ao SQL Server pelo driver após SQL_PERF_START. Comandos grandes podem levar vários buffers, portanto, se um comando grande for enviado para o servidor e preencher seis pacotes, ServerRndTrips será incrementado por um e BuffersSent será incrementado em seis. |
| BuffersRec | Número de pacotes TDS recebidos pelo driver do SQL Server depois que o aplicativo começou a usar o driver. |
| BytesSent | Número de bytes de dados enviados ao SQL Server em pacotes TDS depois que o aplicativo começou a usar o driver. |
| BytesRec | Número de bytes de dados em pacotes TDS recebidos pelo driver do SQL Server depois que o aplicativo começou a usar o driver. |
Estatísticas de Tempo
| Campo SQLPERF | Descrição |
|---|---|
| msExecutionTime | Período cumulativo de tempo que o driver passou processando após SQL_PERF_START, incluindo o tempo gasto aguardando respostas do servidor. |
| msNetworkServerTime | Quantidade cumulativa de tempo que o driver gastou aguardando respostas do servidor. |
Consulte Também
SQL Server Native Client (ODBC)
Criação de perfil de tópicos de instruções de desempenho do driver ODBC (ODBC)