query_database
Ejecuta una consulta SQL contra la base de datos MSSQL usando prepared statements.
Parámetros
Sección titulada «Parámetros»| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
query | string | Sí | Consulta SQL a ejecutar |
Ejemplo de uso
Sección titulada «Ejemplo de uso»{ "name": "query_database", "arguments": { "query": "SELECT TOP 10 * FROM users WHERE active = 1" }}Consultas permitidas
Sección titulada «Consultas permitidas»En modo lectura (MSSQL_READ_ONLY=true)
Sección titulada «En modo lectura (MSSQL_READ_ONLY=true)»SELECT— Siempre permitidoINSERT,UPDATE,DELETE— Solo en tablas de la whitelistEXEC,xp_cmdshell— Siempre bloqueado
En modo completo (MSSQL_READ_ONLY=false)
Sección titulada «En modo completo (MSSQL_READ_ONLY=false)»- Todas las operaciones SQL estándar
EXEC,xp_cmdshell— Siempre bloqueado por seguridad
Ejemplos de consultas
Sección titulada «Ejemplos de consultas»-- Consulta simpleSELECT * FROM products WHERE price > 100
-- JOIN complejoSELECT u.name, COUNT(o.id) as total_ordersFROM users uJOIN orders o ON u.id = o.user_idGROUP BY u.name
-- CTEWITH recent_orders AS ( SELECT * FROM orders WHERE order_date > DATEADD(day, -30, GETDATE()))SELECT * FROM recent_orders
-- Funciones de ventanaSELECT name, salary, ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) as rankFROM employeesSeguridad
Sección titulada «Seguridad»- Las consultas se ejecutan con
PrepareContext()— no hay concatenación de strings SQL - El tamaño máximo de consulta es configurable via
MSSQL_MAX_QUERY_SIZE - Se aplica un timeout de 30 segundos por defecto
- En modo read-only, se validan todas las tablas referenciadas (incluyendo JOINs y subqueries)