SQL Server

Aquí encontraras todos nuestros post relacionados con SQL Server desde cero hasta un nivel avanzado. Desde infraestructura hasta modelado de datos.

Restringir el acceso a SQL Server por IP

A estas alturas de la película, todos los que llevamos tiempo en esto de la administración de SQL Server hemos recibido la misma pregunta en más de una ocasión: “¿Se puede bloquear el acceso a SQL Server según la máquina desde la que se conecta un usuario?” Spoiler: sí, se puede, pero no de la manera que muchos esperan. Y no, SQL Server no tiene un checkbox mágico para esto. Hay que ensuciarse las manos. Y aquí es donde entramos nosotros.

Lo que SQL Server no puede hacer (al menos por defecto)

No existe, al menos hasta el día de hoy, ninguna opción nativa en SQL Server que permita vincular un login a una IP específica. Ni en el Management Studio, ni en el registro, ni en las opciones avanzadas. No busques, que no está. Y no, tampoco hay un parámetro oculto de configuración que habilite esto.

Así que si lo que esperabas era marcar una casilla para decir “este login solo se conecta desde esta IP”… puedes dejar de leer aquí. Pero si estás dispuesto a ir un poco más allá, porque lo estás, hay una solución elegante (y eficaz): usar un trigger de tipo LOGON.

¿Un trigger de inicio de sesión? Sí, y bien usado

SQL Server permite crear triggers a nivel de servidor que se ejecutan justo cuando un usuario intenta iniciar sesión. Y es ahí donde podemos interceptar la conexión, comprobar desde qué IP se está intentando conectar, y decidir si le damos la bienvenida… o le cerramos la puerta en la cara.

Para obtener la IP del cliente, podemos usar la vista sys.dm_exec_connections, que nos da, entre otros muchos datos, la dirección desde la que se está estableciendo la sesión actual. Esa es la base de todo este invento.

Primer ejemplo: el caso clásico del login sa

Empezamos por el escenario más sencillo: restringir el acceso del usuario sa a una IP concreta (o, mejor aún, solo permitirle conexión desde el propio servidor).

Este es un ejemplo de trigger directo y sin florituras:

Y ya está. Este trigger bloquea cualquier intento de conexión con el usuario sa desde una IP que no sea la del propio servidor o la que hayas indicado. Simple, efectivo y… sí, peligroso si no documentas bien la IP que estás autorizando. Porque si te equivocas y te bloqueas a ti mismo, te va a tocar entrar por modo seguro, y no será divertido.

Segundo escenario: múltiples usuarios, múltiples IPs

Ahora, pongámonos serios. No vas a crear un trigger por cada usuario. Ni tú, ni nadie. Para algo tenemos bases de datos. Vamos a externalizar la lógica de IPs permitidas en una tabla, y a hacer que el trigger se alimente de ahí.

Primero, creamos una base de datos auxiliar de configuración, por ejemplo ConfigSeguridad, y dentro, dos tablas: una con los logins permitidos y sus IPs, y otra (opcional) para registrar intentos fallidos de acceso.

Ahora podemos rellenarla con la lógica que queramos. Por ejemplo:

Sí, aquí admitimos la palabra clave ‘TODAS’ como forma elegante de decir “este login puede conectarse desde cualquier parte del mundo, hasta desde el tren si hace falta”.

Y aquí viene el trigger maestro:

Este trigger es mucho más flexible. Puedes dar acceso a múltiples usuarios desde múltiples IPs, sin tener que tocar el código. Solo modificas los datos en la tabla. Que es como debe ser.

Y si, seguro que alguno está levantando la ceja por eso de usar EXECUTE AS ‘sa’ pero, es lo que hay. Es necesario para acceder a vistas como sys.dm_exec_connections si el usuario que se conecta no es sysadmin. No hay vuelta de hoja.

¿Y los errores? ¿Y los logs?

Todo esto está muy bien, pero cuando algo falla queremos saber qué ha pasado. Y sobre todo desde dónde.

Podemos mejorar el sistema añadiendo una tabla de log de errores y registrando ahí los intentos de conexión denegados:

Y dentro del trigger:

De esta forma no solo protegemos, sino que auditamos. Que es justo lo que queremos cuando las cosas se tuercen.

Cuidado con las metidas de pata

Este tipo de trigger tiene mucha potencia, pero también un alto potencial para dejarte fuera como si hubieras olvidado las llaves dentro del coche. Si te bloqueas a ti mismo por error, hay dos formas de volver a entrar en el servidor y recuperar el control.

La primera es iniciar SQL Server en modo de inicio mínimo (-f) o modo de usuario único (-m), y eliminar el trigger desde ahí. Es incómodo, requiere reiniciar servicios, y si lo haces en un entorno en producción, más te vale tener una buena excusa preparada.

La segunda, más limpia y menos traumática, es conectarte a través de DAC (Dedicated Admin Connection). Esta conexión especial está activa en todos los SQL Server, pero ojo: el acceso remoto mediante DAC sí está deshabilitado por defecto. Y eso, en muchos casos, es como si no existiera, porque muchos de nosotros no administramos los servidores desde la consola local del host.

Puedes habilitar el acceso remoto a DAC con esta instrucción:

Y aquí viene la parte clave, no puedes usar DAC desde el GUI de SSMS. Olvídate de escribir ADMIN:servidor en el cuadro de conexión: eso no funciona. Para conectarte por DAC necesitas usar sqlcmd, ya sea desde la línea de comandos o desde el modo SQLCMD en SSMS (sí, ese modo raro que muchos ignoran hasta que es demasiado tarde).

Desde consola, la conexión se haría así:

Y desde ahí, puedes desactivar el trigger como si nada hubiera pasado.

Así que, si vas a jugar con triggers de inicio de sesión, valida bien tu tabla de permisos, habilita y prueba DAC remota, y ten sqlcmd a mano. Porque cuando el trigger se ponga tonto, el Management Studio no te va a sacar del apuro. Y cuando eso pase, querrás tener un plan B que no incluya reiniciar producción en hora punta.

Conclusión

Sí, se puede restringir el acceso a SQL Server por IP. No, no es una funcionalidad nativa. Pero con un poco de código y sentido común, se puede controlar quién entra y desde dónde. Es una capa de seguridad adicional que, bien usada, puede salvarte de más de un disgusto. Especialmente si aún sigues permitiendo conexiones con el usuario sa desde equipos de usuarios. Que eso sí que es una mala práctica de campeonato.

El código completo lo tienes en mi cuenta de GitHub, como siempre. Si lo vas a implementar, hazlo con cabeza. Aquí no venimos a jugar con triggers, venimos a proteger entornos que importan.

Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Cloud, SQL Server, 0 comentarios

Estado del mercado de bases de datos en 2025

Hacer un estudio de mercado sobre tecnologías de bases de datos es una de esas tareas que a primera vista suena a powerpoint corporativo, pero que en manos de técnicos con cicatrices se convierte en una radiografía útil del presente y futuro del sector. Así que vamos a destripar el Top-20 de DB‑Engines de agosto de 2025 sin frases motivadoras ni colorines innecesarios. 

TDLR: lo relacional sigue mandando, lo NoSQL crece y lo demás se mueve al ritmo del hype y la nube.

¿Qué es DB‑Engines y por qué lo usamos como termómetro?

DB‑Engines es una iniciativa creada y mantenida por Red-Gate, una empresa especializada en tecnología de bases de datos. No es una asociación, ni un organismo oficial, ni un spin-off académico. Es una plataforma privada e independiente que publica un ranking mensual de sistemas de bases de datos en función de su popularidad.

¿Y qué mide exactamente?

Al contrario de lo que pudiera parecer no mide rendimiento, ni instalaciones reales, ni cuota de mercado. Mide señales públicas de atención y actividad técnica: menciones en foros, frecuencia de búsqueda en Google, apariciones en LinkedIn, preguntas en Stack Overflow, ofertas de trabajo y artículos técnicos publicados. Es decir, mide qué motores generan conversación, formación, interés profesional y visibilidad.

DB‑Engines también publica comparativas entre motores, artículos explicativos y datos históricos. Pero su producto estrella es el ranking mensual, seguido por empresas, arquitectos y responsables técnicos como referencia de tendencia, no como oráculo infalible. Si una tecnología sube, es porque hay más gente hablando de ella. Si baja, puede que siga en producción, pero ya no ocupa tantas portadas ni conferencias.

¿Refleja esto la realidad de los entornos críticos? No siempre. ¿Sirve para entender hacia dónde se mueve la conversación y, por tanto, la demanda de conocimiento? Sin duda. Lo usamos no porque sea perfecto, sino porque es el mejor termómetro disponible para medir la temperatura del mercado.

Relacional manda: sí, todavía

Del TOP 20 del ranking de motores de bases de datos, doce son relacionales puros o “multi-modelo con ADN relacional”. No hablamos solo de Oracle, MySQL, SQL Server y PostgreSQL; también están Snowflake, Db2, SQLite, MariaDB, Microsoft Access (sí, todavía), Azure SQL Database, Hive y BigQuery.

Traducción técnica: si tu carga es OLTP, OLAP o una mezcla de ambas, sigues teniendo un core relacional como referencia. Todo lo demás (documentales, grafos, clave-valor, búsqueda) se consolida como satélite especializado. No es que el NoSQL haya muerto. Es que no ha conquistado el núcleo.

PostgreSQL: el ganador moral

PostgreSQL sube más de 33 puntos en el año. No es casualidad. La comunidad lo adora, los hyperscalers lo ofrecen como servicio gestionado, y se adapta con extensiones que lo vuelven polivalente: pgvector para IA, Timescale para series temporales, FDW para federación, Logical Replication para entornos distribuidos.

¿La clave? Es open source de verdad, no con asterisco. Y satisface a arquitectos que quieren potencia sin vender un riñón por licencia. Es, en muchos proyectos nuevos, la elección por defecto. No por moda, sino por eficacia.

Oracle, MySQL y SQL Server: viejos reyes, nuevos entornos

Oracle sigue el primero, como lleva años. No porque haya ganado popularidad, sino porque sigue incrustado en el ADN de la empresa clásica: banca, seguros, administración pública. Sí, cuesta, pero funciona. Y nadie quiere reescribir 200 procedimientos PL/SQL con dependencias cruzadas.

MySQL pierde más de 110 puntos en un año. Lo usan millones, pero ya no es el chico cool de la fiesta. El stack web se ha fragmentado, y muchos han migrado a PostgreSQL o soluciones más específicas.

SQL Server, por su parte, mantiene el tercer puesto, pero ha perdido más de 60 puntos interanualmente. No es que haya desaparecido, pero la conversación pública se ha desplazado a otras plataformas. SQL Server sigue siendo caballo de batalla en empresas medianas y grandes, especialmente en entornos on-prem y Azure híbrido, donde la integración con Active Directory, SSIS, SSRS y otros clásicos de la casa siguen marcando la pauta.

Eso sí, atención a lo que viene, SQL Server 2025 está ya en preview y apunta maneras. Entre las novedades: mejoras notables en rendimiento, seguridad y compatibilidad híbrida con Azure Arc. También hay nuevos mecanismos de optimización automática, mejoras para entornos con alto volumen de transacciones y más integración con servicios de inteligencia artificial. Aún es pronto para saber si estas mejoras se traducirán en una remontada en el ranking, pero no sería raro que en 2026 viésemos un repunte de visibilidad técnica si la preview convence y la migración se acelera.

MongoDB: menos moda, más estabilidad

MongoDB cae en puntuación, pero sigue como NoSQL más alto. ¿Qué ha pasado? Básicamente, ha dejado de ser “la novedad”. Se ha convertido en una opción seria y estable, y eso le resta ruido en redes. Además, la competencia le viene desde dos frentes: PostgreSQL con JSONB y servicios documentales específicos en cloud (tipo Cosmos DB o DocumentDB).

¿Se sigue usando? Mucho. Pero ya no está en el centro de las conversaciones de arquitectos. Eso sí, en microservicios y aplicaciones event-driven, sigue encajando como un guante.

El ascenso silencioso: Snowflake, Databricks y BigQuery

Aquí es donde empieza el capítulo “analítica en cloud”. Snowflake sube casi 43 puntos en el año. Databricks, más de 31. BigQuery, casi 10. El patrón es claro: DWH y lakehouse se están moviendo a plataformas gestionadas con elasticidad real, integración con IA y modelos de costes más modernos (aunque no siempre más bajos, según el uso).

¿Lo mejor? Que estos motores no están pensados para sustituir tu base OLTP. Vienen a resolver el otro gran problema: consolidar, transformar y explotar datos a gran escala sin montar un zoo de clusters on-prem.

Redis, Cassandra y DynamoDB: NoSQL donde toca

Redis baja levemente, pero sigue siendo imprescindible. Si no lo usas para caché o colas, es probable que tengas un cuello de botella innecesario en tu arquitectura.

Cassandra sube 11 puntos. Sigue sin estar de moda, pero es uno de los pocos motores que realmente escala linealmente sin pedir milagros al throughput del disco.

DynamoDB sube más de 14 puntos. Beneficiado por el lock-in positivo de AWS: si ya estás allí, y quieres serverless con rendimiento decente y costes predecibles, Dynamo es un candidato serio. El patrón es el mismo: NoSQL para lo que NoSQL hace bien.

El nicho útil: Neo4j y los grafos

Neo4j entra en el Top-20 y sube más de 10 puntos. No porque todo el mundo esté modelando grafos, sino porque hay más fraude que nunca, más recomendaciones que nunca y más necesidad de trazabilidad que nunca.

Eso sí, sigue siendo un nicho. No vas a modelar una tienda online en grafo. Pero cuando lo necesitas, no hay sustituto.

Embebido: SQLite 

SQLite sube 7 puntos y se mantiene como el motor más invisible y más desplegado del planeta. Está en móviles, navegadores, apps de escritorio… y nadie habla de él. Pero sin él, medio mundo digital colapsaría.

Esto es importante, SQLite es, con diferencia, la base de datos más desplegada del planeta: está en cada móvil Android o iOS, en navegadores, en aplicaciones de escritorio, en coches, en televisores… Es omnipresente y nadie la instala conscientemente. Justo por eso, no aparece en tantos foros, ofertas de trabajo o notas de prensa, y DB-Engines se alimenta de esas señales.

Como SQLite es un motor embebido que funciona en segundo plano y rara vez se administra “como producto”, no genera ruido mediático. Nadie abre un hilo en Stack Overflow con “ayuda, tengo problemas de clúster con SQLite” porque… no hay clúster. Tampoco ves ofertas de trabajo “Buscamos experto senior en SQLite”. Y eso, para DB-Engines, cuenta como “menos popularidad”.

El gran olvidado: Access

Microsoft Access cae (otra vez), pero sigue en el ranking. Y con razón. No diremos nombres, pero todos conocemos una pyme, una universidad o incluso una gran empresa que tiene un .mdb dando soporte a algo que “no se puede tocar hasta que Juan vuelva de vacaciones”. Lo gracioso (o lo trágico, según el día) es que ese Access suele seguir funcionando. Sin actualizaciones automáticas, sin tests, sin pipeline CI/CD… pero ahí está, cumpliendo su papel.

Access tiene una base fiel que lo sigue defendiendo con uñas, dientes y formularios incrustados. Y aunque en muchos casos sería razonable migrar a soluciones más modernas, también hay que reconocer que para cierto tipo de aplicaciones de backoffice, gestión interna o pequeños procesos departamentales, Access fue (y sigue siendo) una navaja suiza. Desactualizada, sí. Limitada, también. Pero a veces suficiente, y eso es más de lo que pueden decir muchos proyectos en la nube con dashboards que fallan cada martes.

Así que sí, sigue cayendo en popularidad… pero no desaparecerá del todo. Y mientras existan ficheros compartidos en una unidad de red llamada \\SERVIDOR-CONTABILIDAD, Access seguirá teniendo un rincón en el ecosistema.

Elasticsearch y Splunk: ¿fin del hype?

Elasticsearch pierde 15 puntos, Splunk 26. El mensaje es claro: la observabilidad está cambiando de cara. Los costes y la complejidad de estas plataformas están siendo desafiados por soluciones cloud nativas, integración con Prometheus, OpenTelemetry, e incluso por modelos de pago más flexibles. Nadie discute su valor técnico, pero ya no son los únicos en la mesa.

¿Qué se puede inferir del informe?

Lo más claro es lo que ya hemos comentado, lo relacional sigue siendo el corazón de la arquitectura de datos. Incluso en entornos modernos, la consistencia, las transacciones y el SQL siguen siendo el pegamento. NoSQL no ha sustituido a nada, simplemente se ha acoplado a lo que le toca.

El desarrollo cloud y la analítica moderna están redefiniendo qué es “popular”, pero los fundamentos no han cambiado. Quien sepa SQL, entienda particiones, y sepa modelar bien, sigue siendo indispensable.

PostgreSQL es la opción sensata si no quieres venderle tu alma a ningún proveedor, y Snowflake, BigQuery o Databricks son opciones serias para analítica avanzada si el Excel se te queda corto (o si necesitas procesar terabytes en vez de fórmulas con SI(CONJUNTO)).

¿Y en España?

No hay datos locales de DB‑Engines, pero los que trabajamos aquí lo sabemos: mucho Oracle y SQL Server en el tejido empresarial clásico, bastante MySQL en web, y cada vez más PostgreSQL en nuevas implantaciones. Y sí, cuando hay presupuesto, Snowflake o BigQuery asoman la cabeza en los RFP de analítica.

Las startups se mueven con PostgreSQL + Redis + alguna solución cloud para IA o analítica. Las grandes, con Oracle + DWH en cloud y Access escondido en una carpeta llamada “no tocar”.

Conclusión

Puedes mirar el ranking todas las semanas, pero si no entiendes qué papel juega cada tecnología en tu stack, no sirve de nada. Las modas cambian, pero las bases siguen siendo las mismas: consistencia, rendimiento, escalabilidad y coste. Y sí, elegir mal la base de datos sigue siendo una forma rápida de complicarte la vida durante años.

Así que, como siempre, elige con criterio técnico, no con pulsaciones de Twitter. Y si estás pensando en migrar algo solo porque “PostgreSQL lo está petando”, más vale que tengas buenos motivos, y no solo un gráfico bonito. Porque lo único más peligroso que una mala arquitectura… es una moda mal entendida.

Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de Telegram y un canal de YouTube a los que te puede unir. ¡Hasta la próxima! 

Publicado por Roberto Carrancio en Cloud, SQL Server, 0 comentarios

¿Cuál es el coste de no optimizar SQL?

La mayoría de las empresas que trabajan con SQL Server no tienen ni la más remota idea de lo que les cuesta no optimizar sus consultas. Y no, no hablo de la típica pérdida de rendimiento que molesta al usuario de vez en cuando. Hablo de dinero. Del que se escapa cada mes por la rendija del servidor porque nadie se molestó en revisar ese SELECT con JOIN cruzado que parece escrito por un algoritmo con ganas de venganza.

Pero vamos por partes. Porque el drama tiene capítulos, y todos salen caros.

Hardware: más coste para hacer lo mismo (o menos)

Cuando una consulta no está optimizada, lo primero que pide el sistema es más CPU. Más RAM. Más disco. Y como somos humanos, y a veces un poco vagos, el primer impulso es escalar verticalmente: poner más hierro. Total, si ya funciona mal, con más recursos irá mejor, ¿no?

Pues sí. Durante un rato. Luego viene otra consulta igual de mala y vuelta a empezar. El patrón es de sobra conocido: base de datos lenta, compras hardware, mejora temporal, vuelve la lentitud, compras más hardware… y cuando te das cuenta, estás alimentando un monstruo que vive de cores, GB y licencias.

Y aquí entra la broma que siempre duele: SQL Server se licencia por core. Así que cada vez que decides “arreglar” un problema de rendimiento añadiendo CPU, estás aceptando voluntariamente pagar más en licencias, que no son baratas. Es como combatir la sed bebiendo agua salada: parece que ayuda, pero en realidad te estás hundiendo más.

Logo SoyDBA

Únete a la newsletter de SoyDBA

Regístrate gratis para no perderte ninguna novedad. Te avisaré de noticias y eventos importantes

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.

El coste real en la nube: «elástico», sí, pero hacia arriba

Muchos creen que al migrar a la nube el problema desaparece. Que Azure SQL, AWS RDS o cualquier plataforma PaaS mágica va a solucionar lo que tu SELECT * no quiso arreglar. Y no, no es así.

En la nube todo se factura. Cada milisegundo de CPU, cada MB de RAM, cada GB de almacenamiento y cada IO de disco. Una consulta ineficiente en Azure no solo es lenta: es cara. Muy cara. Porque, a diferencia de tu servidor físico en el CPD, aquí no tienes un coste hundido. Aquí cada operación se convierte en un apunte contable. Y si te pasas, la factura no perdona.

He visto clientes triplicar su consumo mensual de Azure SQL sin añadir ni un solo usuario más. ¿La causa? Un informe mal diseñado, una vista que arrastra medio millón de registros y un desarrollador con más entusiasmo que criterio.

Una historia real de coste en azure

Y luego están los casos como este. Años atrás, un cliente me llamó porque su Azure SQL Managed Instance con 8 cores (unos 1.355€ al mes) tenía la CPU por encima del 90% casi todo el día, con picos constantes al 100% que parecían avisos de incendio. Lo más grave no era eso, sino que ya habían asumido que la única salida era duplicar recursos y pasar a 16 cores, lo que dispararía la factura a 2.700€/mes. Antes de firmar el salto, decidieron llamarme. Por suerte.

Lo que me encontré era un festival del despropósito. Ni un solo índice clustered, todos los índices nonclustered eran de una sola columna y, por supuesto, sin INCLUDE. Mirando el uso, el 95% de esos índices no se usaban. Y claro, la DMV de índices faltantes parecía la lista de tareas de un becario sin supervisión: infinita, desordenada y sin lógica.

Con un par de días de trabajo serio (revisión de patrones de consulta y una política de indexación con sentido común) no solo evitamos el escalado, sino que redujimos la instancia a 4 cores. El resultado fue sorprendente, CPU estable al 30% incluso en horas pico. Lo que se dice, respirar. Pero además, más de 25.000€ al año de ahorro respecto a la solución que estaban a punto de contratar.

El coste del “Pero si se lanza una vez al año…”

Ya que me he puesto en plan cuentacuentos, déjame contarte otra de esas anécdotas que se graban a fuego.

Un día me encontré con un informe, hecho en Tableau (pero eso es lo de menos), que lanzaban una vez al año y que tardaba en completarse… 22 horas. Bueno, yo lo pillé cuando llevaba 22 horas de ejecución en el SQL Server de producción, a saber cuánto más le quedaba. Cuando lo comenté, me dijeron que no pasaba nada, que solo se lanzaba una vez al año y que solían dejarlo corriendo de un día para otro, como quien pone la olla lenta con garbanzos.

Pero yo lo vi claro. La consulta tenía 47 subconsultas en el SELECT. Si, si, CUARENTA Y SIETE. No índices raros, no estructuras marcianas, solo una estructura de consulta absurda.

¿El cambio? Reescribir con LEFT JOIN bien definidos en lugar de esas subconsultas incrustadas. Nada más. Bueno si, una subconsulta que se repetía bastantes veces muy parecida se persistió como temporal al inicio del proceso. De esa manera los datos se leian y filtraban de una tabla grande una sola vez y se quedaban en una tabla pequeña para consultar el resto de las veces. Pero nada más, ni cambiar índices, ni tocar el esquema. Vamos, sin reformar la casa. ¿El resultado? Menos de 20 milisegundos.

Y esto amigos, esto no es una mejora. Eso es pasar de enviar la consulta en burro a ponerle un cohete. Y no exagero.

Porque no todo el coste es culpa del desarrollador

No vamos a demonizar. Todos hemos escrito consultas que después nos dieron vergüenza ajena. Y sí, hay veces que las prisas, las entregas y los deadlines te llevan a empalmar un par de subconsultas “de emergencia” con un UNION sin ALL y a mirar para otro lado.

Pero eso no justifica dejar ese código en producción durante años como si fuera parte del mobiliario. Porque esa consulta, aunque solo se ejecute una vez al día, puede ser la responsable de saturar el servidor, disparar el DTU en Azure o arrastrar a otras aplicaciones con ella.

Aquí entra en juego lo que me gusta llamar “el coste invisible de la desidia técnica”. No se ve, no se presupuesta, pero se paga igual. En horas de soporte, en tiempo perdido, en usuarios frustrados, en reputación quemada.

De 10 minutos a 2 milisegundos (sin efectos especiales)

Otra historia real, por si alguien aún cree que exagero.

Me llama un cliente porque un proceso tarda más de 10 minutos. Revisamos el plan de ejecución y canta como un tenor: falta un índice. Literalmente lo está pidiendo a gritos. Un Clustered Index Scan sobre una tabla de 10 millones de registros con 5 campos varchar(max).

Creamos un índice sencillo sobre los dos campos que busca… y bajamos a 20 segundos. Bien, ¿no?

Pero no me conformé. Me di cuenta de que esos campos varchar(max) apenas se usaban y propuse moverlos a otra tabla. Un cambio mínimo de esquema, sin traumas. El resultado: la consulta se resuelve ahora en 2 milisegundos.

Sí, de más de diez minutos a dos milisegundos. Sin comprar licencias, sin añadir cores, sin tirar la casa por la ventana. Solo sentido común.

Consultas eficientes, bases de datos rentables

Optimizar una consulta no es hacer magia negra ni sacrificar cabras sobre el plan de ejecución. Es técnica, análisis y experiencia. A veces basta con añadir un índice. O con quitar un SELECT * y poner solo las columnas que necesitas. O con evitar ese cursor que llevas arrastrando desde hace 10 años como si fuera un trauma sin resolver.

Una consulta optimizada no sólo corre más rápido. Consume menos CPU. Bloquea menos. Permite que más usuarios trabajen al mismo tiempo. Y, lo más importante, reduce directamente tu coste de infraestructura y licenciamiento.

No es filosofía, son matemáticas puras, si una consulta tarda 500 ms y logra pasar a 50 ms, puedes hacer 10 veces más operaciones con los mismos recursos. ¿Te imaginas que tu equipo hiciera 10 veces más tareas al mismo sueldo? Eso es lo que hace una base de datos bien afinada.

El coste del «si funciona, no lo toques»

Una de las excusas más repetidas cuando se habla de optimizar es: “Pero si ya funciona, ¿para qué meternos ahí?” Pues por eso mismo. Porque ahora va, pero mal. Y cada día que pasa, cada usuario que se conecta, cada nuevo informe que se genera, lo hace un poco peor.

La deuda técnica no caduca. Se acumula. Y cuando salta, no lo hace con un error bonito y fácil de arreglar. Lo hace con un rendimiento desastroso en el peor momento: justo antes del cierre contable, durante el Black Friday o cuando el CEO quiere ver “cómo va todo” desde Power BI (todo casos reales).

Si optimizar parece caro, espera a ver cuánto cuesta no hacerlo.

Formación, experiencia y algo de mala leche

Sí, optimizar lleva tiempo. Requiere saber leer planes de ejecución, entender estadísticas, conocer cómo SQL Server decide qué estrategia usar y cuándo. Pero también requiere actitud. Ganas de escarbar. De no conformarse con que funcione “más o menos”.

Y eso, lamentablemente, no lo da ningún botón mágico ni el asistente del Management Studio. Hay que aprenderlo. O contratar a alguien que lo sepa.

Aquí es donde entra mi parte, claro. No solo como autor de este blog, sino también como consultor. Llevo más de 12 años viendo barbaridades que harían llorar al optimizador de consultas. Y ayudando a equipos a entender por qué sus bases de datos son lentas, y cómo hacer que dejen de serlo sin hipotecar la nube ni sacrificar fines de semana enteros en tareas de mantenimiento que no deberían existir.

Y sí, estoy escribiendo un libro

Mi libro se va a llamar “SQL SERVER: La NO guía práctica de optimización”. Y no será el típico tocho con recetas milagrosas genéricas que nadie es capaz de aplicar en producción. Será un manual honesto, directo y realista. Uno que explica cómo optimizar sin morir en el intento, desde la base y comprendiendo el funcionamiento interno del motor de base de datos. Porque ya tenemos demasiadas presentaciones bonitas que no dicen nada.

Y sí, también haré formación. Y talleres. Y sesiones donde, si hace falta, nos peleamos con los planes de ejecución hasta que canten. Porque se puede. Porque debe hacerse. Y porque seguir pagando licencias por no optimizar… simplemente no tiene sentido.

¿Quieres dejar de pagar por no saber? Hablemos.

Si después de leer esto has pensado en esa consulta que lleva años sin tocar, en ese informe que tarda 12 minutos, o en ese servidor que cada semana pide más cores como si fueran cromos… ya sabes lo que hay.

Puedes seguir ignorándolo, puedes aprender cómo optimizar SQL Server o puedes llamarme y lo miramos juntos.

Tu factura lo va a notar.

Publicado por Roberto Carrancio en Cloud, Rendimiento, SQL Server, 0 comentarios

El mito de los atajos en bases de datos: por qué no hay recetas mágicas

Pocas cosas me generan más frustración que una presentación titulada “10 trucos infalibles para optimizar tu base de datos en 5 minutos”. No porque no quiera rendimiento (lo quiero, y mucho, como todos), sino porque llevo demasiado tiempo en esto como para creer que la administración de bases de datos funciona a base de fórmulas mágicas o guías milagrosas. Cada entorno tiene sus peculiaridades, sus desastres heredados y sus decisiones cuestionables. Pretender que una receta genérica resuelva un problema específico es como recetar paracetamol para un clúster caído. Puede calmar al usuario, pero no soluciona nada.

Atajos en bases de datos que suenan bien pero no funcionan

He visto más veces de las que me gustaría cómo ciertas “técnicas exprés” se convierten en dogmas. Muchas veces aparecen en foros, otras en conversaciones de pasillo, y a veces incluso las incluye algún artículo con demasiadas estrellitas y poca base técnica. Algunas de estas ocurrencias incluso se disfrazan de buenas prácticas, cuando en realidad son puro maquillaje técnico.

Uno de los clásicos eternos es el de desactivar todos los índices antes de una carga masiva. Suena lógico: menos índices, menos mantenimiento durante la inserción. Y puede tener sentido, pero solo si sabemos lo que estamos haciendo. ¿Qué tipo de índices hay? ¿Son realmente necesarios? ¿Cuál es el coste de reconstruirlos después? Porque de nada sirve ahorrar cinco minutos en la carga si luego pasamos tres horas rehaciendo estructuras en plena ventana de mantenimiento (o peor, fuera de ella).

Otro habitual es el uso de hints a ciegas, como si un INNER HASH JOIN fuera una especie de hechizo arcano que mágicamente convierte cualquier consulta en un rayo de luz. El problema, claro, es que el optimizador tiene más información de la que solemos tener nosotros en tiempo de ejecución. Forzar un plan sin pruebas, sin medir, sin entender por qué el motor decide lo que decide, es jugar a ser adivino con el presupuesto de IOPS de otro.

Y por supuesto, no podía faltar el legendario DBCC SHRINKDATABASE, convertido en herramienta habitual de “mantenimiento” por muchos que aún no se han parado a medir sus consecuencias reales. Fragmentación masiva, crecimiento inmediato posterior, tiempos de espera, y un uso de recursos que no compensa ni en entornos de desarrollo, mucho menos en producción. Apretar y soltar el disco como si fuera un globo no libera espacio: solo complica las cosas.

También me topo, de tanto en tanto, con scripts “mágicos” que prometen optimizar todas las consultas de una base de datos con un solo clic. El solo hecho de que alguien los haya escrito ya es preocupante, pero lo que me quita el sueño es que otros los ejecuten sin pararse a pensar. Optimizar no es lanzar un script genérico; es entender, medir, corregir y validar. Todo lo demás es ruido.

La influencia de las redes sociales y los vídeos cortos

En los últimos años, hemos visto cómo el contenido técnico (especialmente en campos con más tracción como ciberseguridad, desarrollo web o administración de sistemas) ha sido invadido por lo que yo llamo la cultura del vídeo de 30 segundos. Esos fragmentos de sabiduría empaquetada en un reel, un TikTok o un hilo de X (antes Twitter, cuando la gente aún sabía debatir sin stickers), donde se vende una técnica como si fuera una revelación divina.

Y aunque parecía que nuestro sector de las bases de datos estaba a salvo de esa superficialidad, cada vez veo más vídeos y publicaciones que sugieren cosas como “optimiza tu SQL Server con este comando”, “el índice que no conocías y te cambiará la vida”, o directamente “el script definitivo para tunear tu instancia”. La cruda realidad es que si usas un script definitivo sin saber qué hace, probablemente estés abriendo un ticket para mí en dos semanas.

¿Que hay gente compartiendo contenido útil? Por supuesto. Pero también hay mucho perfil que ha aprendido a posicionarse en el algoritmo antes que en el execution plan. Lo importante ya no es si lo que dicen tiene sentido, sino si entra bien en vertical, con una música pegadiza de fondo y subtítulos en negrita.

No tengo nada en contra del formato ágil, yo también consumo contenido rápido, pero sí tengo todo en contra de presentar trucos sin contexto, sin advertencias, y sin reconocer que la base de datos no es un entorno de juguete. Es producción. Y producción no se toca a base de “5 tips en 30 segundos”.

El problema no es solo la desinformación. Es que, al repetirse tanto, estos “atajos mágicos” terminan calando. Y entonces llegan al entorno del cliente, del compañero, o al nuestro, envueltos en frases como “vi a un experto decir que esto mejora el rendimiento” o “lo probé en local y funcionó”. El día que alguien monte un clúster con instrucciones de un TikTok, no quiero estar cerca.

La importancia de entender los fundamentos de SQL Server

Lo que realmente marca la diferencia no son los trucos, sino entender qué está pasando dentro del motor. Cuando dejamos de repetir recetas y empezamos a estudiar el comportamiento real de SQL Server, la administración deja de ser un ejercicio de fe y se convierte en una disciplina técnica seria.

Por ejemplo, saber que SQL Server trabaja internamente con páginas de 8 KB nos hace pensar mejor en los tipos de datos, la compresión, la fragmentación y el diseño de índices. Si no entendemos eso, cualquier optimización será como mover las sillas en el Titanic mientras se hunde, entretenido, pero inútil.

También aprendemos cómo funciona el optimizador de consultas, qué espera encontrar, cómo interpreta las estadísticas, y por qué a veces se equivoca. La cardinalidad, ese concepto que a muchos les suena a magia negra, resulta ser clave para entender por qué una consulta se convierte en un escaneo de tabla de millones de filas o en un plan eficiente con pocos milisegundos de CPU.

Y sí, los bloqueos no son enemigos a eliminar. Son síntomas, advertencias, mecanismos de protección. Una transacción larga puede ser más dañina que cien bloqueos bien gestionados. Aprender a leer deadlock graphs, entender niveles de aislamiento y diseñar correctamente el acceso concurrente es mucho más útil que cualquier script que prometa “evitar bloqueos automáticamente”.

Tampoco podemos olvidarnos de las estadísticas. Ejecutar UPDATE STATISTICS porque lo leímos en una lista de tareas semanales es mejor que nada, pero muy lejos de una estrategia de mantenimiento inteligente. Entender cuándo se actualizan, cómo afectan a los planes de ejecución y qué impacto tienen en entornos con muchas escrituras es parte del trabajo que no puede automatizarse con un clic.

Logo SoyDBA

Únete a la newsletter de SoyDBA

Regístrate gratis para no perderte ninguna novedad. Te avisaré de noticias y eventos importantes

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.

Conocimiento frente a atajos: la diferencia entre arreglar y entender

Aquí es donde la cosa se pone seria. Porque cualquiera puede buscar un error en Google, copiar el primer bloque de código que encuentra y cruzar los dedos. Pero entender el origen del problema, anticipar sus consecuencias y aplicar una solución sostenible y perdurable requiere tiempo, conocimiento y experiencia. Y eso no se compra ni se descarga.

Cuando tengo que elegir entre arreglar algo deprisa o entender por qué está roto, prefiero lo segundo. Porque arreglar sin comprender es pan para hoy y desastre para mañana. Ya nos conocemos ese guion: parche rápido, alivio temporal, y dentro de una semana… el mismo problema, pero más grande.

Los atajos, en general, no resuelven nada. Solo tapan síntomas. Como esa costumbre de algunos de hacer REBUILD INDEX sin mirar estadísticas de fragmentación, sin diferenciar índices columnstore y sin medir el impacto real en el rendimiento. Más mantenimiento no siempre es mejor mantenimiento. A veces es solo ruido.

Conclusión

Si algo tengo claro después de más de una década en esto es que los milagros no existen en administración de bases de datos. Hay herramientas útiles, sí. Hay buenas prácticas, también. Pero no hay soluciones universales. Y cada vez que alguien actúa como si las hubiera, lo único que consigue es complicar aún más el trabajo de quienes venimos detrás a recoger los pedazos.

SQL Server no premia al que improvisa, sino al que entiende. No necesitamos más scripts mágicos, necesitamos más análisis, más diagnóstico, más contexto. Y sobre todo, más respeto por el conocimiento técnico. Porque al final, el rendimiento real no llega por hacer más clics, sino por hacer las preguntas correctas y saber interpretar las respuestas.

Así que, si alguien te promete un truco definitivo para que tu base de datos vuele, recuerda: también hay quien promete que los cursores funcionan bien. No les creas.

Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de LinkedIn y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Cloud, SQL Server, 0 comentarios

¿DBA todoterreno o especialista? El dilema de las ofertas de trabajo

Cada vez que veo una oferta de trabajo que pide un DBA todoterreno con experiencia en SQL Server, Oracle, PostgreSQL, MySQL, MongoDB, Sybase, Cassandra y, de paso, conocimientos en DevOps, Kubernetes, Power BI, scripting en Python y algo de tuning en SAP HANA, me pregunto si están contratando a un administrador de bases de datos o a un grupo de consultores disfrazado de persona.

Estas ofertas no son una excepción puntual. Son ya una categoría en sí mismas. Y no es que me asuste el conocimiento transversal, al contrario: todos empezamos tocando varios palos. El problema es otro. El problema es que esta tendencia a buscar perfiles “todoterreno” está erosionando algo esencial: la profundidad técnica.

Generalistas en soporte, especialistas en producción

Tener una visión amplia de varios motores tiene su valor. Es útil en entornos donde la diversidad tecnológica es real, o en roles de soporte de primer nivel donde lo importante es reconocer patrones, detectar errores frecuentes y saber cuándo escalar. En ese contexto, un DBA generalista puede cumplir perfectamente su función. No es el que resuelve el problema más complejo, pero sí el que lo identifica antes de que se agrave.

Ahora bien, cuando pasamos a producción real, de esa que duele cuando falla, la historia cambia. En entornos donde una caída significa pérdida de negocio o una consulta mal diseñada cuesta cientos de euros en recursos, lo que marca la diferencia no es haber leído la documentación de tres motores distintos. Es conocer a fondo cómo piensa uno de ellos. Qué decisiones toma el optimizador, cómo se gestionan los bloqueos internos, qué implica realmente un ROLLBACK en una transacción de 200 GB, o cómo se comporta el almacenamiento ante ciertos patrones de acceso.

Es ahí donde entra el especialista. Ese DBA que no solo sabe qué está pasando, sino por qué. Que no necesita revisar los logs durante una hora porque ya ha visto ese fallo antes. Que no tiene que adivinar cómo reacciona el motor ante un plan de ejecución aberrante porque conoce su funcionamiento interno al detalle.

Y eso, por mucho que lo disfracemos con etiquetas como “perfil híbrido” o “dev-friendly”, no se consigue tocando siete tecnologías a la vez. Se consigue con foco, con años, con sangre (figurada), sudor (literal) y muchas noches leyendo documentación técnica mientras medio mundo duerme.

La falsa promesa del todoterreno que sabe de todo

Lo curioso es que esta demanda de omnisciencia técnica no viene solo de recursos humanos. Muchas veces nace del propio sector, de una cultura en la que parecer que sabes de todo vale más que saber realmente de algo. Como si el valor de un profesional se midiera por la longitud de su perfil en LinkedIn y no por la calidad de las decisiones que toma cuando todo se viene abajo.

El problema no es querer aprender de todo. Eso está bien. Lo peligroso es querer ser experto en todo. Porque eso es sencillamente imposible. Y quien lo intenta, acaba acumulando conocimientos superficiales que no resisten la presión de producción. Sabe ejecutar, pero no explicar. Identifica errores, pero no los entiende. Y eso, en el mejor de los casos, es ineficaz. En el peor, es directamente peligroso.

Yo no necesito un DBA que sepa hacer un poco de todo si cuando de verdad importa no distingue entre un latch y un wait. Prefiero al que lleva decenas de miles de horas trabajando con SQL Server, que ha visto servidores arder (a veces de forma figurada y otras casi literalmente) y sabe que el plan de mantenimiento de índices no es una tarea semanal sino una decisión estratégica.

Por desgracia, el mercado aún no valora como debería esa profundidad. Sigue prefiriendo perfiles con veinte tecnologías mencionadas y cero responsabilidades asumidas. Pero los equipos técnicos, los de verdad, los que dan soporte a entornos críticos, sí saben lo que vale un especialista. Y cuando hay que elegir entre uno que sabe un poco de todo y otro que domina lo que importa, no lo dudan.

Una nota para RRHH y responsables técnicos: el perfil ideal no existe

Si trabajas en selección o lideras un equipo técnico, este mensaje también va para ti. Es comprensible querer encontrar al “candidato ideal”, pero cuidado con convertirlo en una fantasía técnica. Las ofertas que piden un DBA que domine cinco motores distintos, tres entornos cloud, monitorización avanzada, DevOps y BI… no están buscando una persona. Están buscando una quimera.

La versatilidad es útil, claro. Pero en producción real, lo que necesitamos es profundidad. Y la profundidad no nace de tocar muchas cosas por encima, sino de meterse hasta el cuello en una tecnología concreta, convivir con ella en sus buenas y malas épocas, y saber exprimirla cuando toca.

Si pedís a alguien que haga todo, no hará nada bien. Y lo peor: los que realmente saben no aplicarán. Porque el que lleva años con SQL Server o con Oracle y tiene criterio técnico para tomar decisiones críticas no va a perder el tiempo en una oferta que parece escrita por un generador automático de palabras clave.

Cuando diseñéis el perfil, pensad en lo que de verdad necesitáis. ¿Hace falta experiencia real en alta disponibilidad en SQL Server? Entonces no pongáis “conocimientos en MySQL valorables” como si fuera un bonus simpático. Si el core del trabajo es PostgreSQL, no tiene sentido exigir 5 años con Mongo. Sed específicos. Y sobre todo, sed realistas.

NO TE PIERDAS NADA

Sé el primero en conocer nuestras novedades

¡No hacemos spam! Lee nuestra política de privacidad para obtener más información.

El valor está en la profundidad, no en la dispersión

Hay una diferencia importante entre aprender y pretender. Aprender de varios motores, entender qué los distingue, explorar sus filosofías y herramientas, es una fase lógica y necesaria en el camino de cualquier DBA. Pero en algún punto hay que tomar decisiones. Elegir un stack, profundizar, construir criterio técnico.

Ese paso, que para algunos parece una renuncia, en realidad es lo que convierte a un profesional en alguien verdaderamente valioso. No porque sea incapaz de aprender otra cosa, sino porque ha decidido invertir su tiempo donde realmente puede marcar la diferencia.

Y esto no es una apología del inmovilismo. No se trata de quedarse atrapado en una tecnología por comodidad. Se trata de entender que el dominio técnico requiere tiempo, foco y profundidad. No se puede ser referente en cinco motores distintos a la vez. Y si alguien lo afirma… bueno, probablemente también cree que los NOLOCK solucionan bloqueos.

Conclusión

No hay nada malo en explorar varios caminos. Pero si queremos ser profesionales sólidos, de esos que se buscan cuando algo se rompe de verdad, en algún momento hay que elegir dónde cavar más hondo.

Un DBA indispensable no es el que sabe instalar todo lo que existe, sino el que entiende su entorno como nadie más. Ese que no improvisa, sino que anticipa. Que no copia soluciones, sino que las construye. Y eso no lo da la amplitud. Lo da la profundidad.

Así que, si estás empezando, aprende de todo lo que puedas. Pero no te quedes ahí. Y si ya llevas años, quizá va siendo hora de preguntarte: ¿quieres ser uno más en todas partes o el que marca la diferencia donde realmente importa?

Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de LinkedIn y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Cloud, SQL Server, 0 comentarios

¿Está SQL Server realmente muerto como dicen algunos?

Cada pocos años alguien anuncia la muerte de SQL Server con la misma convicción con la que se predice el fin del mundo. Y, como suele pasar, seguimos aquí, con instancias vivas, bases de datos respirando y DBAs quejándose de los mismos problemas de siempre… y de unos nuevos. El auge de las bases de datos analíticas, la popularidad de entornos cloud como Snowflake o Microsoft Fabric, el ruido de las soluciones NoSQL y la omnipresencia de alternativas relacionales como MySQL o PostgreSQL han creado un escenario donde cualquiera podría pensar que el reinado de SQL Server se tambalea. Sin embargo, las novedades anunciadas para SQL Server 2025 apuntan a todo lo contrario: el producto sigue mutando para seguir siendo relevante, incluso si eso implica acercarse peligrosamente al mundo de la ciencia de datos. Y todo esto sin soltar la bandera que le hizo grande: el motor transaccional.

El entorno actual: cada uno en su liga

No es ningún secreto que las bases de datos analíticas están en su momento. Snowflake, BigQuery o Azure Synapse se han convertido en la herramienta preferida para quienes necesitan triturar terabytes de datos con más rapidez que un analista quemando su último café. Microsoft, por su parte, ha apostado fuerte con Fabric, un entorno que quiere ser la navaja suiza del dato: integración, ingeniería, análisis, IA… y todo en la nube, sin que te preocupes por el hardware (o eso dicen, hasta que llega la factura).

En paralelo, el ecosistema NoSQL sigue vivo, aunque su hype inicial ya no llena auditorios. MongoDB, Cassandra y compañía encontraron su nicho: estructuras flexibles, escalabilidad horizontal y consultas rápidas para ciertos patrones de uso. Pero conviene recordar que no es la primera vez que la industria promete que “lo nuevo” es la panacea. Antes fue XML en bases de datos, luego el OLAP embebido en todo, más tarde los lagos de datos que acabarían con los almacenes tradicionales… y ahí siguen las bases relacionales, 50 años después, ejecutando transacciones sin descanso. “Sin esquema” no significa “sin problemas”, y muchos que lo ignoraron pagaron el precio en migraciones forzadas y dolores de cabeza técnicos.

Mientras tanto, las bases de datos relacionales de código abierto siguen creciendo. PostgreSQL ha dejado de ser el “hermano alternativo” para convertirse en la opción principal de muchos nuevos proyectos. MySQL, que sobrevive gracias a su inercia y al ecosistema que lo rodea, sigue presente en millones de aplicaciones. Y hasta SQLite, ese motor minimalista, tiene más implantación de la que muchos sospechan, realmente es la base de datos relacional más utilizada, gracias en parte a que está embebido en aplicaciones móviles, navegadores y dispositivos IoT.

SQL Server en 2025: más que un SGBD relacional

Si echamos un vistazo a las novedades anunciadas para SQL Server 2025, el mensaje es claro: Microsoft no quiere que SQL Server se perciba solo como “la base de datos transaccional de siempre” y a la vez sí. La integración nativa con capacidades de ciencia de datos, el soporte extendido para Python y R, y la mejora de conectores con entornos como Fabric o Azure Machine Learning junto con las optimizaciones y mejoras del motor transaccional lo colocan como una plataforma híbrida, capaz de manejar tanto cargas OLTP como escenarios analíticos complejos.

Esto no es nuevo. Llevamos años viendo cómo SQL Server incluye características que antes parecían fuera de lugar: PolyBase para consultar datos externos, Graph Database para modelar relaciones no relacionales, o el soporte para formatos como Parquet y ORC a través de EXTERNAL TABLE. Pero en 2025 la apuesta es más decidida: acercar al científico de datos a la misma herramienta donde ya vive el dato empresarial. Porque mover datos sigue siendo caro y lento, aunque lo disfracemos de “pipelines”.

El motor OLTP: la base que no se toca

Entre tanta novedad es fácil olvidar lo obvio: SQL Server sigue siendo, ante todo, un motor OLTP sólido, fiable y maduro. Es el tipo de sistema que lleva años procesando millones de transacciones diarias sin que nadie lo ponga en duda. No será el más rápido del mundo en benchmarks aislados, pero tampoco se estrella en ninguna disciplina. Es ese jugador de equipo que no siempre marca goles espectaculares, pero nunca falla un pase. En entornos de misión crítica, eso vale más que el hype de la semana.

Aplicaciones financieras, sistemas de reservas, ERPs, CRMs… todos siguen necesitando un motor transaccional robusto, y SQL Server continúa cumpliendo sin dramas. Es cierto que el mercado está más fragmentado, pero en el terreno de las operaciones diarias, la consistencia y la integridad de datos no pasan de moda. Y ahí, el producto sigue ofreciendo un equilibrio que otros todavía no alcanzan.

Azure SQL: el motor en modo nube

En paralelo, Microsoft ha sabido llevar el ADN de SQL Server a la nube con Azure SQL Database y Azure SQL Managed Instance. Ambos ofrecen el mismo motor relacional, pero con las ventajas del cloud: elasticidad, alta disponibilidad automática y actualizaciones gestionadas. Azure SQL Database brilla para cargas modernas, escalables y distribuidas, mientras que Managed Instance resulta un salvavidas para migraciones lift-and-shift desde entornos on-premises, evitando reescribir medio catálogo de procedimientos almacenados.

Pero no todo es perfecto. La nube te da elasticidad, sí, pero también facturas que crecen más rápido que una tabla de log que no mantienes. Y ciertas configuraciones avanzadas siguen teniendo limitaciones frente al on-premises clásico. Aun así, en la pelea contra RDS for SQL Server, Cloud SQL o Aurora, Azure SQL compite muy decentemente, sobre todo cuando se integra con el resto del ecosistema Microsoft.

Competencia y convivencia: ahora con Oracle en la foto

Intencionadamente no había hablado de Oracle en este artículo aun. Esto es porque merecía su apartado dedicado. Ignorar a Oracle sería como hablar de fútbol sin mencionar a Messi o Cristiano. Oracle sigue siendo el otro gran titán del mundo relacional empresarial. Su estrategia ha ido en dos direcciones claras: reforzar su motor transaccional con mejoras de rendimiento y disponibilidad (la famosa RAC sigue siendo un argumento fuerte) y empujar con fuerza su base de datos autónoma en la nube, que promete optimización automática, parches sin downtime y escalabilidad elástica. En papel suena a ciencia ficción; en la realidad, sigue siendo un producto potente, aunque con el mismo talón de Aquiles que siempre: licenciamiento complejo y costes elevados.

Oracle mantiene una cuota sólida en sectores donde el riesgo no se negocia, como banca o telecomunicaciones, pero su imagen de “producto premium” lo aleja de entornos más ágiles o con presupuestos ajustados. En ese hueco es donde SQL Server ha sabido jugar sus cartas: más versátil en despliegues, más sencillo de administrar y con una curva de entrada menos intimidante.

La mayoría de grandes organizaciones que usan Oracle no prescinden de SQL Server; al contrario, los combinan. Oracle se queda con lo que justifica su precio (OLTP ultra crítico, escenarios de HA extrema) y SQL Server cubre aplicaciones empresariales, integraciones y cargas mixtas donde la flexibilidad pesa más que la pureza del rendimiento.

Oracle en entornos analíticos

En el frente analítico, Oracle ha optado por un enfoque doble. Por un lado, ha ido incorporando capacidades analíticas directamente en su motor transaccional, con funciones in-database, modelos estadísticos y procesamiento in-memory columnar para ejecutar cargas masivas sin mover los datos. Por otro, ha desarrollado Oracle Autonomous Data Warehouse, su servicio cloud gestionado para analítica, con escalabilidad automática y optimización asistida, pensado para competir con Snowflake o BigQuery. La diferencia es que Oracle sigue apostando por la especialización y la potencia de su propio ecosistema, mientras que Microsoft, con Fabric, ha preferido unificar integración, ingeniería y consumo en un solo marco. Solo el tiempo nos dirá quien ha optado por la solución correcta.

¿Un viraje o una extensión natural?

Visto lo que hay, los puristas dirán que SQL Server se está “contaminando” con funciones que no le corresponden. Los pragmáticos vemos otra cosa: un intento lógico de mantenerse en un mercado donde ya no basta con ser bueno en lo tuyo, sino que hay que ser útil en lo que otros necesitan. Si el científico de datos puede trabajar sobre el mismo entorno donde el ERP graba transacciones, se ahorran latencias, ETLs y errores humanos. Y si encima puedes exponer los resultados a Power BI o Fabric sin montar un festival de integraciones, más puntos a favor.

Esto no significa que SQL Server vaya a sustituir a Snowflake o a un motor columnar puro en un data warehouse masivo. Significa que cada vez será más común ver entornos mixtos, donde el dato crudo se procese en un sistema especializado y SQL Server actúe como nodo central para servir datos curados, combinados y gobernados.

El veredicto: no, no está muerto

Si algo nos enseña la historia de la tecnología es que las modas pasan y las bases sólidas permanecen. El hype del NoSQL, los lagos de datos milagrosos o las bases “autónomas” con inteligencia artificial han tenido su momento, y en muchos casos han acabado como piezas útiles pero de uso específico. Las bases de datos relacionales llevan medio siglo alimentando aplicaciones críticas y, lejos de extinguirse, siguen adaptándose.

SQL Server no se está apagando, se está transformando. Lo que vemos en 2025 es un motor más abierto, más conectado y con capacidades que hace diez años habrían hecho reír a cualquier DBA clásico. Pero, sobre todo, sigue siendo un motor transaccional de referencia, capaz de mover operaciones críticas día tras día sin pestañear. No será el mejor en todo, pero tampoco es malo en nada, y esa consistencia es la que mantiene viva su posición.

Y además tiene su versión en la nube bien armada, con Azure SQL plantando cara a las alternativas cloud sin complejos. El futuro del producto no es blanco o negro; es híbrido. Y, por ahora, SQL Server sigue siendo muy bueno en eso.

Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de LinkedIn y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Cloud, SQL Server, 0 comentarios

¿Cómo convertirse en DBA este 2025?

Desde que tengo más visibilidad en redes sociales y empiezo a aparecer en eventos, hay una pregunta que se repite una y otra vez: ¿Cómo se convierte uno en DBA si todas las ofertas, incluso las de junior, piden años de experiencia?

Y es que, convertirse en DBA en 2025 es un poco como intentar entrar en una sala VIP donde no hay puerta ni cartel. Todo el mundo te dice que necesitas experiencia, pero nadie te da la oportunidad de adquirirla. Las ofertas que se etiquetan como junior piden tres años de experiencia, conocimientos avanzados de T-SQL, algo de PowerShell, HA/DR, y si puedes ser experto en Azure, mejor. Y todo eso por, digamos, 24K y una guardia cada dos semanas.

No es que el mercado esté cerrado. Es que el rol del DBA, tal y como se entiende hoy, no es un puesto de entrada. Es una evolución.

No hay un camino único para ser DBA, pero sí dos rutas habituales

Los que acabamos siendo DBAs casi nunca lo decidimos desde el principio. No es como querer ser desarrollador backend o administrador de sistemas. Normalmente nadie sueña con revisar alertas de TempDB a las 3 de la mañana o analizar por qué una MERGE se ha cargado 4 millones de filas de más (y de paso, media reputación del equipo). Pero un día estás ahí, y te das cuenta de que sabes más que nadie del rendimiento de la base de datos, del modelo de datos y de por qué la aplicación se cae todos los lunes a las 9:03.

En mi experiencia, los perfiles que acaban siendo buenos DBAs vienen sobre todo de dos mundos: desarrollo o administración de sistemas. Cada ruta tiene sus fortalezas, sus trampas y su forma particular de enseñarte a base de golpes.

Llegar a DBA desde el desarrollo

Los que vienen del desarrollo conocen bien el lenguaje T-SQL, entienden cómo piensan los desarrolladores y tienen facilidad para leer y optimizar consultas. Es habitual que en equipos sin DBA, el dev más curioso empiece a encargarse de las bases de datos “porque se le da bien”. Lo típico: arregla un SELECT, luego otro, y cuando se quiere dar cuenta, está explicando a los demás cómo hacer un JOIN decente o por qué ese UPDATE va camino del desastre. Sin saberlo, ya está ejerciendo de DBA. Solo falta que lo asuma.

Llegar a DBA desde la infraestructura

Desde administración de sistemas, el camino es distinto. Aquí se llega por la capa de infraestructura: gestionar instancias, montar clústeres, configurar copias de seguridad, monitorizar el espacio en disco y automatizar tareas repetitivas. Lo bueno de este enfoque es que la persona ya tiene mentalidad de disponibilidad, control, mantenimiento y alertas. Lo malo: si no se mete de lleno con el código, acaba siendo un DBA a medias. Y con el tiempo, esos se quedan fuera de juego.

La clave, en ambos casos, es la misma: asumir responsabilidades de DBA antes de que te lo reconozcan oficialmente. Nadie te va a dar el título. Te lo tienes que ganar.

Cursos, formación y el eterno dilema de si certificarse o no

Vamos con un tema sensible: ¿sirven para algo los cursos y las certificaciones? Pues depende. Como casi todo.

Empecemos por los cursos. En SQL Server no existen cursos oficiales de formación como tal. Microsoft tiene la certificación (de eso hablaremos luego), pero no ofrece un itinerario formativo estructurado y mantenido. Hay empresas que imparten cursos propios, algunos buenos, otros reciclados de 2012 con pantallazos de Management Studio en modo arqueológico.

Eso sí, en otras tecnologías la cosa cambia. Oracle, PostgreSQL, MongoDB… ahí sí hay formación oficial, bien montada, con laboratorios y materiales decentes. Pero claro, si quieres ser DBA de SQL Server, eso no te sirve de mucho (aunque nunca está de más abrir el radar).

Ahora, las certificaciones

¿Vale la pena sacar la DP-300 de Microsoft? Vamos por partes.

Seamos sinceros, yo por ejemplo no la tengo. En mi opinión personal (OPINIÓN EXCLUSIVAMENTE MIA), si tienes experiencia, la certificación no te va a enseñar nada que no sepas ya. Pero te da una credencial, y a veces, eso abre puertas que no abre tu CV. Es útil si quieres justificar conocimiento frente a RRHH, a una consultora o a un cliente que no sabe distinguir un WAIT STATS de un WAITRESS (chiste malo para los que saben inglés). Para mi, no mide lo que sabes, pero sí que sabes “lo suficiente como para certificarte”.

Ahora bien, si no tienes experiencia real, aunque la DP-300 no te va a convertir en DBA por arte de magia si puede servirte para marcar el terreno. Demuestra interés, compromiso y, al menos, cierto conocimiento básico. Si estás empezando y puedes permitirte el esfuerzo, mejor tenerla que no tener nada. Pero no esperes que te contraten como DBA solo por tenerla. No funciona así.

El laboratorio personal: mejor que mil cursos, o complemento a ellos

Una de las formas más efectivas de adquirir experiencia como DBA es montarte tu propio laboratorio. Aquí puedes poner en práctica todo lo que aprendes en cursos o por tu cuenta. No hay tutores, no hay guías de solución, cuando algo no arranca, el culpable eres tú. Justo como en producción, vaya.

Tampoco te asustes, no hace falta hipotecarse y comprar un super servidor para jugar con SQL Server. Con Docker, Azure o incluso un mini PC de segunda mano puedes hacer pruebas más que decentes. Lo importante no es montarse un Always On para enseñarselo a tu madre. Es aprender, romper cosas, configurarlas mal, arreglarlas, medir, volver a romper… y así hasta que entiendas por qué las cosas funcionan (o no).

Y sí, tengo en marcha una serie completa en YouTube donde explico cómo montar un SQL Server Home Lab, con Proxmox, Windows Server, Active Directory, SQL Server 2022 y conexiones remotas. Pero ojo, no es porque piense que todo el mundo tenga que hacerlo. Es porque si decides dar ese paso, quiero que lo hagas con criterio. Y sobre todo, sabiendo lo que estás montando y para qué. Puedes ver la serie completa aquí.

¿Y si no hay ofertas de DBA junior? Pues se crea experiencia sin que te la den hecha

Vamos al meollo. ¿Cómo consigues experiencia si no hay ofertas junior? Pues haciendo de DBA sin permiso, literalmente.

Me explico antes de que nadie me salte al cuello. Si estás en un equipo de desarrollo, asume todo lo que puedas relacionado con la base de datos. Revisa el código SQL, pregunta por los planes de ejecución, mide los tiempos, analiza los índices. Que cada vez que haya un problema en SQL Server, alguien diga que la solución pasa por preguntarte a ti. Hazlo bien una, dos, tres veces. Y cuando lo hayas hecho suficientes veces, empieza a firmar como DBA en tu perfil de LinkedIn. Lo eres, aunque tu contrato diga otra cosa.

Si vienes de sistemas, empieza a documentar los entornos, automatiza backups y monitorización, identifica ineficiencias, saca métricas y mejora procesos. Aprende a leer logs de errores como si fueran novelas de misterio. Y luego mete la cabeza en el rendimiento. Aunque dé vértigo.

Nada de esto va en el CV con letras doradas, pero todo se nota cuando hablas con propiedad en una entrevista.

¿Y qué pasa si te piden experiencia de DBA y tú no la tienes?

Pasa constantemente. Las ofertas junior no existen o son un eufemismo. Pero si te presentas con actitud, con conocimiento técnico razonable, con un entorno montado por ti y capacidad para hablar con claridad de lo que has hecho (aunque sea sin contrato), tienes más opciones de las que parece.

Muchos de nosotros no tuvimos un puesto de “DBA Junior”. Tuvimos un puesto donde nadie se ocupaba de las bases de datos, y nos tocó hacerlo a base de errores. Y desde ahí crecimos.

La diferencia entre los que entran y los que no suele ser una: no esperar a que alguien les diga que ya pueden intentarlo.

Conclusión: nadie te da el título de DBA. Te lo ganas

Ser DBA no es un primer empleo. Es una evolución. Pero puedes empezar ese camino desde desarrollo, desde sistemas o incluso desde BI. Lo importante es asumir esas tareas, resolver problemas reales, meter las manos en el motor y no esperar a que venga alguien a explicarte cómo se hace.

Y sí, la DP-300 ayuda. Pero no sustituye la experiencia. Los cursos también. Si sabes elegirlos.

Y sobre todo: si nadie te da experiencia… róbala. Haz de DBA antes de serlo. Porque en este mundillo, la validación llega después del trabajo. Nunca antes.

Si tenéis alguna duda o sugerencia, podéis dejarla en Twitter, por mail o dejarnos un mensaje en los comentarios. Y recuerda que también tenemos un grupo de LinkedIn y un canal de YouTube a los que te puede unir. ¡Hasta la próxima!

Publicado por Roberto Carrancio en Cloud, SQL Server, 0 comentarios