Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El controlador ODBC de SQL Server Native Client puede generar perfiles de dos tipos de datos de rendimiento:
Consultas de larga duración.
El controlador puede escribir en un archivo de registro cualquier consulta que no obtenga una respuesta del servidor dentro de un período de tiempo especificado. Los programadores de aplicaciones o los administradores de bases de datos pueden investigar cada instrucción SQL registrada para determinar cómo pueden mejorar su rendimiento.
Datos de rendimiento del controlador.
El controlador puede registrar estadísticas de rendimiento y escribirlas en un archivo o ponerlas a disposición de una aplicación a través de una estructura de datos específica del controlador denominada SQLPERF. El archivo que contiene las estadísticas de rendimiento es un archivo delimitado por tabulaciones que se puede analizar fácilmente con cualquier hoja de cálculo que admita archivos delimitados por tabulaciones, como Microsoft Excel.
Cualquier tipo de generación de perfiles se puede activar mediante:
Conexión a un origen de datos que especifica el registro.
Llamar a SQLSetConnectAttr para establecer atributos específicos del controlador que controlan la generación de perfiles.
Cada proceso de aplicación obtiene su propia copia del controlador ODBC de SQL Server Native Client y la generación de perfiles es global a la combinación de una copia de controlador y un proceso de aplicación. Cuando cualquier elemento de la aplicación activa la generación de perfiles, la generación de perfiles registra información de todas las conexiones activas en el controlador desde esa aplicación. Incluso se incluyen las conexiones que no llamaron específicamente a la generación de perfiles.
Después de que el controlador haya abierto un registro de generación de perfiles (ya sea los datos de rendimiento o el registro de consultas de ejecución prolongada), no cierra el registro hasta que el Administrador de controladores ODBC descarga el controlador, cuando una aplicación libera todos los identificadores de entorno que abre en el controlador. Si la aplicación abre un nuevo identificador de entorno, se carga una nueva copia del controlador. Si la aplicación se conecta a un origen de datos que especifica el mismo archivo de registro o establece los atributos específicos del controlador para registrar en el mismo archivo, el controlador sobrescribe el registro anterior.
Si una aplicación inicia la generación de perfiles en un archivo de registro y una segunda aplicación intenta iniciar la generación de perfiles en el mismo archivo de registro, la segunda aplicación no puede registrar ningún dato de generación de perfiles. Si la segunda aplicación inicia la generación de perfiles después de que la primera aplicación haya descargado su controlador, la segunda sobrescribe el archivo de registro de la primera aplicación.
Si una aplicación se conecta a un origen de datos que tiene habilitada la generación de perfiles, el controlador devuelve SQL_ERROR si la aplicación llama a SQLSetConnectOption para iniciar el registro. Una llamada a SQLGetDiagRec devuelve lo siguiente:
SQLState: 01000, pfNative = 0
ErrorMsg: [Microsoft][SQL Server Native Client]
An error has occurred during the attempt to access
the log file, logging disabled.
El controlador deja de recopilar datos de rendimiento cuando se cierra un identificador de entorno. Si una aplicación de SQL Server Native Client tiene varias conexiones, cada una con su propio identificador de entorno, el controlador dejará de recopilar datos de rendimiento cuando se cierre cualquiera de los identificadores de entorno asociados.
Los datos de rendimiento del controlador se pueden almacenar en la estructura de datos SQLPERF o registrarse en un archivo delimitado por tabulaciones. Los datos incluyen las siguientes categorías de estadísticas:
Perfil de aplicación
Conexión
Red
Tiempo
En la tabla siguiente, las descripciones de los campos de la estructura de datos SQLPERF también se aplican a las estadísticas registradas en el archivo de registro de rendimiento.
Estadísticas de perfil de aplicación
| Campo SQLPERF | Descripción |
|---|---|
| TimerResolution | Resolución mínima de la hora del reloj del servidor en milisegundos. Esto normalmente se notifica como 0 (cero) y solo se debe tener en cuenta si el número notificado es grande. Si la resolución mínima del reloj del servidor es mayor que el intervalo probable para algunas de las estadísticas basadas en temporizador, esas estadísticas podrían inflarse. |
| SQLidu | Número de instrucciones INSERT, DELETE o UPDATE después de SQL_PERF_START. |
| SQLiduRows | Número de instrucciones INSERT, DELETE o UPDATE después de SQL_PERF_START. |
| SQLSelects | Número de instrucciones SELECT procesadas después de SQL_PERF_START. |
| SQLSelectRows | Número de filas seleccionadas después de SQL_PERF_START. |
| Transacciones | Número de transacciones de usuario después de SQL_PERF_START, incluidas las reversiones. Cuando una aplicación ODBC se ejecuta con SQL_AUTOCOMMIT_ON, cada comando se considera una transacción. |
| SQLPrepares | Número de llamadas a la función SQLPrepare después de SQL_PERF_START. |
| ExecDirects | Número de llamadas a SQLExecDirect después de SQL_PERF_START. |
| SQLExecutes | Número de llamadas SQLExecute después de SQL_PERF_START. |
| CursorOpens | Número de veces que el controlador ha abierto un cursor de servidor después de SQL_PERF_START. |
| CursorSize | Número de filas de los conjuntos de resultados abiertos por cursores después de SQL_PERF_START. |
| CursorUsed | Número de filas recuperadas realmente a través del controlador de cursores después de SQL_PERF_START. |
| PercentCursorUsed | Es igual a CursorUsed/CursorSize. Por ejemplo, si una aplicación hace que el controlador abra un cursor de servidor para hacer "SELECT COUNT(*) FROM Authors", 23 filas estarán en el conjunto de resultados de la instrucción SELECT. Si la aplicación captura solo tres de estas filas, CursorUsed/CursorSize es 3/23, por lo que PercentCursorUsed es 13.043478. |
| AvgFetchTime | Es igual a SQLFetchTime/SQLFetchCount. |
| AvgCursorSize | Es igual a CursorSize/CursorOpens. |
| AvgCursorUsed | Es igual a CursorUsed/CursorOpens. |
| SQLFetchTime | Cantidad acumulativa de tiempo que tardó en completarse las capturas en los cursores de servidor. |
| SQLFetchCount | Número de capturas realizadas en cursores de servidor después de SQL_PERF_START. |
| CurrentStmtCount | Número de identificadores de instrucción abiertos actualmente en todas las conexiones abiertas en el controlador. |
| MaxOpenStmt | Número máximo de identificadores de instrucción abiertos simultáneamente después de SQL_PERF_START. |
| SumOpenStmt | Número de identificadores de instrucción que se han abierto después de SQL_PERF_START. |
| Estadísticas de conexión: | |
| CurrentConnectionCount | El número actual de identificadores de conexión activa que la aplicación tiene abierta al servidor. |
| MaxConnectionsOpened | Número máximo de identificadores de conexión simultáneos abiertos después de SQL_PERF_START. |
| SumConnectionsOpened | Suma del número de identificadores de conexión que se han abierto después de SQL_PERF_START. |
| SumConnectionTime | Suma de la cantidad de tiempo que todas las conexiones se han abierto después de SQL_PERF_START. Por ejemplo, si una aplicación abrió 10 conexiones y mantuvo cada conexión durante 5 segundos, SumConnectionTime sería de 50 segundos. |
| AvgTimeOpened | Es igual a SumConnectionsOpened/ SumConnectionTime. |
| Estadísticas de red: | |
| ServerRndTrips | Número de veces que el controlador envió comandos al servidor y obtuvo una respuesta. |
| BuffersSent | Número de paquetes de flujo de datos tabulares (TDS) enviados a SQL Server por el controlador después de SQL_PERF_START. Los comandos grandes pueden tomar varios búferes, por lo que si se envía un comando grande al servidor y rellena seis paquetes, ServerRndTrips se incrementa en uno y BuffersSent se incrementa en seis. |
| BuffersRec | Número de paquetes TDS recibidos por el controlador de SQL Server después de que la aplicación comenzara a usar el controlador. |
| BytesSent | Número de bytes de datos enviados a SQL Server en paquetes TDS después de que la aplicación comenzara a usar el controlador. |
| BytesRec | Número de bytes de datos en paquetes TDS recibidos por el controlador de SQL Server después de que la aplicación comenzara a usar el controlador. |
Estadísticas de hora
| Campo SQLPERF | Descripción |
|---|---|
| msExecutionTime | Cantidad acumulativa de tiempo que el controlador ha dedicado al procesamiento después de SQL_PERF_START, incluido el tiempo dedicado a esperar respuestas del servidor. |
| msNetworkServerTime | Cantidad acumulativa de tiempo que el controlador ha dedicado a esperar respuestas del servidor. |
Véase también
SQL Server Native Client (ODBC)
Temas de procedimientos de generación de perfiles del controlador ODBC (ODBC)