Una extensión de Visual Studio Code que proporciona capacidades de profiling de SQL Server usando Extended Events (XE) para capturar y analizar ejecuciones de consultas en tiempo real.
- ✅ Profiling en tiempo real usando Extended Events de SQL Server
- ✅ Interfaz intuitiva con webview integrado
- ✅ Filtrado avanzado por base de datos, tipo de evento y texto de consulta
- ✅ Ordenamiento de resultados por diferentes columnas
- ✅ Exportación de resultados en formato JSON
- ✅ Configuración flexible de conexión a SQL Server
- ✅ Auto-actualización cuando el profiling está activo
- Visual Studio Code 1.74.0 o superior
- SQL Server (cualquier versión que soporte Extended Events)
- Permisos para crear/administrar Extended Events en SQL Server
- Clona este repositorio
- Ejecuta
npm installpara instalar las dependencias - Ejecuta
npm run compilepara compilar el proyecto - Presiona
F5para abrir una nueva ventana de VS Code con la extensión cargada
Método recomendado: Usar conexiones de mssql
La extensión utiliza automáticamente las conexiones configuradas en la extensión oficial de SQL Server (mssql). Configura tus conexiones en settings.json:
{
"mssql.connections": [
{
"profileName": "Local SQL Server",
"server": "localhost",
"database": "master",
"authenticationType": "Integrated",
"port": 1433,
"encrypt": false
},
{
"profileName": "Remote SQL Server",
"server": "remote-server.com",
"database": "MyDatabase",
"authenticationType": "SqlLogin",
"user": "username",
"password": "password",
"port": 1433,
"encrypt": true
}
],
"sqlProfiler.selectedConnection": "Local SQL Server"
}Método alternativo: Connection string
También puedes configurar una cadena de conexión directa:
{
"sqlProfiler.connectionString": "Server=localhost;Database=master;Integrated Security=true;"
}- SQL Profiler: Open SQL Server Profiler - Abre la interfaz del profiler
- SQL Profiler: Start SQL Server Profiling - Inicia la captura de eventos
- SQL Profiler: Stop SQL Server Profiling - Detiene la captura
- SQL Profiler: Clear Profiler Results - Limpia los resultados actuales
La interfaz incluye:
- Selector de conexión: Elige entre las conexiones mssql configuradas
- Controles: Botones para iniciar/parar/limpiar/exportar/actualizar
- Barra de estado: Indicador de estado de profiling y número de eventos
- Filtros: Por base de datos, tipo de evento y búsqueda de texto
- Tabla de resultados: Con ordenamiento por columnas
- Contador de eventos: Muestra el total de eventos capturados
- Filtro por base de datos: Muestra solo eventos de una base de datos específica
- Filtro por tipo de evento: RPC Completed o SQL Batch Completed
- Búsqueda de texto: Busca en el texto de las consultas SQL
- Ordenamiento: Haz clic en los headers de las columnas para ordenar
{
"sqlProfiler.connectionString": {
"type": "string",
"default": "",
"description": "Cadena de conexión de SQL Server"
},
"sqlProfiler.sessionName": {
"type": "string",
"default": "VSCodeProfilerSession",
"description": "Nombre de la sesión de Extended Events"
},
"sqlProfiler.autoStart": {
"type": "boolean",
"default": false,
"description": "Iniciar profiling automáticamente al abrir archivos SQL"
},
"sqlProfiler.maxEvents": {
"type": "number",
"default": 1000,
"description": "Número máximo de eventos a capturar"
}
}extension.ts: Punto de entrada principal y registro de comandosSqlProfilerManager.ts: Manejo de Extended Events y conexión a SQL ServerProfilerWebviewProvider.ts: Proveedor de contenido para el webviewprofiler.css: Estilos para la interfaz de usuarioprofiler.js: Lógica del frontend y comunicación con la extensión
sqlserver.rpc_completed: Captura llamadas a procedimientos almacenados completadassqlserver.sql_batch_completed: Captura lotes de comandos SQL completados
- La extensión maneja las credenciales de SQL Server de forma segura
- Las sesiones de Extended Events se limpian automáticamente
- No se almacenan credenciales en archivos de configuración por defecto
ProfilerTool/
├── src/
│ ├── extension.ts
│ ├── profiler/
│ │ └── SqlProfilerManager.ts
│ ├── webview/
│ │ ├── ProfilerWebviewProvider.ts
│ │ ├── profiler.css
│ │ └── profiler.js
│ └── database/ (futuro)
├── package.json
├── tsconfig.json
└── README.md
npm run compile- Compila TypeScriptnpm run watch- Compila en modo watchnpm run test- Ejecuta testsnpm run lint- Ejecuta linting
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Distribuido bajo la licencia MIT. Ver LICENSE para más información.
- Implementación inicial
- Soporte para Extended Events
- Interfaz web básica
- Filtrado y ordenamiento
- Exportación de resultados
- Los eventos de larga duración pueden no aparecer inmediatamente
- La configuración de conexión requiere recargar la extensión
- Limitación en el número máximo de eventos para evitar problemas de memoria
- Soporte para múltiples conexiones simultáneas
- Plantillas de filtros personalizados
- Análisis de rendimiento automatizado
- Integración con Azure Data Studio
- Notificaciones de eventos críticos