Cómo ejecutar consultas SQL en SAP HANA
Si necesitas ejecutar consultas SQL en SAP HANA, tienes dos opciones principales: usar SAP HANA Studio (interfaz grafica) o hdbsql (linea de comandos). En esta guia te explico ambos metodos paso a paso con ejemplos practicos.
Ejecutar SQL desde SAP HANA Studio
SAP HANA Studio es la herramienta grafica mas utilizada para administrar bases de datos HANA. Sigue estos pasos:
- Accede a SAP HANA Studio e inicia sesion con tus credenciales
- Abre SQL Console desde el menu o con clic derecho sobre tu sistema
- Escribe tu consulta SQL en el editor
- Ejecuta con F8 o el boton "Execute"
- Revisa los resultados en el panel inferior
Si no tienes acceso a HANA Studio, puedes instalarlo o usar la alternativa por linea de comandos que veremos a continuacion.
Ejecutar SQL desde hdbsql (linea de comandos)
hdbsql es el cliente de linea de comandos de SAP HANA. Es esencial cuando no tienes acceso a la interfaz grafica o necesitas automatizar tareas.
Conectar a SAP HANA con hdbsql
Sintaxis basica de conexion:
hdbsql -n <servidor>:<puerto> -u <usuario> -p <password>Ejemplo real conectando al servidor hanadb en el puerto 30015:
hdbsql -n hanadb:30015 -u SYSTEM -p MiPassword123Ejecutar una consulta directamente
Puedes ejecutar SQL sin entrar al modo interactivo usando el parametro -x:
hdbsql -n hanadb:30015 -u SYSTEM -p MiPassword123 "SELECT * FROM DUMMY"Ejecutar un script SQL desde archivo
hdbsql -n hanadb:30015 -u SYSTEM -p MiPassword123 -I script.sqlEjemplos de consultas SQL utiles en SAP HANA
Ver usuarios bloqueados
SELECT USER_NAME, USER_DEACTIVATED, DEACTIVATION_TIME
FROM USERS
WHERE USER_DEACTIVATED = 'TRUE';Ver espacio usado por tablas
SELECT SCHEMA_NAME, TABLE_NAME,
ROUND(MEMORY_SIZE_IN_TOTAL/1024/1024, 2) AS SIZE_MB
FROM M_CS_TABLES
ORDER BY MEMORY_SIZE_IN_TOTAL DESC
FETCH FIRST 20 ROWS ONLY;Ver conexiones activas
SELECT CONNECTION_ID, USER_NAME, CLIENT_HOST, CONNECTION_STATUS
FROM M_CONNECTIONS
WHERE CONNECTION_STATUS = 'RUNNING';Ver version de SAP HANA
SELECT VERSION FROM M_DATABASE;Ver uso de memoria
SELECT HOST,
ROUND(USED_PHYSICAL_MEMORY/1024/1024/1024, 2) AS USED_GB,
ROUND(FREE_PHYSICAL_MEMORY/1024/1024/1024, 2) AS FREE_GB
FROM M_HOST_RESOURCE_UTILIZATION;Parametros utiles de hdbsql
| Parametro | Descripcion |
|---|---|
-n | Servidor y puerto (servidor:puerto) |
-u | Usuario |
-p | Password |
-d | Base de datos (tenant) |
-I | Ejecutar script desde archivo |
-o | Guardar resultado en archivo |
-c | Separador de columnas (default: ,) |
-j | Alinear columnas para mejor lectura |
Consejos para ejecutar SQL en HANA
- Usa EXPLAIN PLAN antes de ejecutar consultas pesadas para analizar el rendimiento
- Limita los resultados con FETCH FIRST N ROWS ONLY para evitar sobrecargar el sistema
- Consulta las vistas M_* para informacion de monitorizacion del sistema
- Usa schemas para organizar tus objetos de base de datos
- Revisa los permisos antes de ejecutar consultas en tablas de sistema
Preguntas frecuentes
Como me conecto a SAP HANA desde linea de comandos?
Usa el comando hdbsql con los parametros de conexion: hdbsql -n servidor:puerto -u usuario -p password. El puerto por defecto suele ser 30015 para el tenant SYSTEMDB o 3XX15 donde XX es el numero de instancia.
Cual es la diferencia entre SAP HANA Studio y hdbsql?
SAP HANA Studio es una interfaz grafica basada en Eclipse que permite administrar la base de datos visualmente. hdbsql es el cliente de linea de comandos, ideal para scripts, automatizacion y cuando no hay acceso a interfaz grafica.
Como ejecuto un archivo SQL en SAP HANA?
Con hdbsql puedes ejecutar un script SQL desde archivo usando el parametro -I: hdbsql -n servidor:puerto -u usuario -p password -I script.sql. El archivo debe contener sentencias SQL validas.
Que puerto usa SAP HANA para conexiones SQL?
SAP HANA usa el puerto 3XX15 donde XX es el numero de instancia. Por ejemplo, para la instancia 00 seria 30015, para la instancia 01 seria 30115. El SYSTEMDB siempre usa 3XX13.
Como veo las tablas disponibles en SAP HANA?
Puedes consultar la vista TABLES del schema SYS: SELECT SCHEMA_NAME, TABLE_NAME FROM TABLES WHERE SCHEMA_NAME = 'TU_SCHEMA'. Para ver todas las tablas usa SELECT * FROM TABLES.
