Inteligencia Artificial

Búsquedas semánticas con IA en SQL Server 2025

En algún momento entre pelear con índices zombis y migraciones eternas, Microsoft ha decidido que SQL Server también podía ser inteligente. Y no me refiero al tipo de inteligencia que esperas de un MERGE bien hecho (que ya sabemos que es difícil de ver), sino a IA de verdad: modelos de lenguaje, embeddings, vectores y búsquedas semánticas integradas directamente en el motor. Sí, en nuestro motor de base de datos favorito.

En este artículo vamos a desmenuzar la nueva funcionalidad de SQL Server 2025 que permite integrar modelos de IA para realizar búsquedas semánticas directamente desde SQL. Sin inventos raros y, lo más sorprendente, sin tener que abandonar nuestro entorno habitual. Ahora podemos chatear con nuestros datos sin salir del Management Studio.

Inteligencia artificial en SQL Server: la cosa se pone serIA

(Perdón por el chiste. Es malísimo, lo sé)

Esto no es un plugin experimental ni una feature de análisis de datos metida con calzador. Microsoft ha incorporado capacidades de IA directamente en el motor de SQL Server. Y eso significa que podemos invocar modelos de lenguaje desde procedimientos almacenados, generar embeddings, indexarlos y hacer comparaciones semánticas en caliente.

Y todo sin que los datos salgan del servidor. La seguridad y el rendimiento siguen siendo prioridad: lo que hacemos es pasar una consulta a un modelo que genera un vector (el embedding) y lo compara con los vectores previamente almacenados localmente. Resultado: respuestas rápidas, semánticamente relevantes y sin montar un chiringuito en Azure (solo unos pocos clicks).

Vectores, embeddings y cosenos: la IA no entiende palabras, entiende números

Esto tiene que quedar claro desde el principio, la IA no trabaja con texto. Aunque lo parezca, la IA no sabe leer. Internamente trabaja con vectores, que son representaciones matemáticas de conceptos. Un vector es simplemente una lista ordenada de números (normalmente de 1536 dimensiones) que representa el “significado” de algo.

Cuando decimos “bicicleta para descenso de montaña”, un modelo de lenguaje genera un vector que encapsula ese significado. Ese vector es un embedding. Y lo interesante es que podemos comparar ese embedding con otros ya almacenados, usando la similitud de coseno, para encontrar los conceptos más cercanos.

Cuanto más cercano es el ángulo entre dos vectores, más parecido es su significado. No hay magia. Hay trigonometría. Pero no te preocupes, que no vas a tener que calcularlo tú: eso se lo dejamos al motor, que para eso está.

¿Cómo implementar esta IA?

En mis pruebas he usado AdventureWorks, cómo no. Desde la tabla de productos, extraemos las descripciones y, a esas descripciones, les generamos embeddings usando un procedimiento almacenado que recibe un texto y lo envía al modelo modelo en Azure OpenAI (podría ser otro, incluso en local, pero aquí opte por ir a lo fácil y rápido). Importante guardar estos embeddings en una tabla separada: más limpio y mejor rendimiento.

Por último, creamos un segundo procedimiento almacenado que recibe una frase, genera su embedding con el SP anterior y, una vez obtiene su embedding lo compara con los embeddings almacenados en base para devolver los más cercanos. Y sí, todo desde SQL. Llamadas REST mediante, pero dentro de una SP.

Así obtenemos resultados en milisegundos. Eso es lo que tarda en calcular el embedding de una petición y compararlo con los datos. Rápido, elegante, sin ETLs de por medio y sin mover los datos de casa (siempre que uses un modelo local, claro).

¿Qué es esto de las búsquedas semánticas? La magia de la IA en SQL

Este es el verdadero factor diferenciador. No estamos hablando de una búsqueda con like ni de índices de texto completo (Full Text Indexes). Los embedding representan el significado de las palabras de manera que aspectos como sinónimos o incluso, el idioma de la búsqueda dejan de ser un impedimento.

En mis pruebas las descripciones de producto están en inglés, francés o incluso en chino. Yo he probado con prompts en español, inglés e incluso con redacciones ambiguas. El modelo entiende el significado, no la forma. Así que da igual si pides “bicicleta de descenso” o “bike for downhill mountain racing”: el embedding será muy similar y los resultados coherentes.

Una vez que te acostumbras, el LIKE te empieza a parecer una piedra tallada con cincel.

Aplicaciones reales más allá del hype

Vale, comparar descripciones de productos es “la demo fácil”. Pero no significa que no tenga valor ni que esto no se pueda llevar mucho más allá.

Gracias a esta funcionalidad puedes recomendar artículos relacionados en tu tienda web. Pero no es el único caso de uso. 

¿Tienes transcripciones de llamadas de soporte técnico? Embeddings. ¿Tienes feedback de clientes en la web? Embeddings. ¿Quieres analizar opiniones para saber si tu producto gusta o no? Más embeddings. Puedes clasificar sentimientos, detectar patrones de insatisfacción, anticipar problemas o simplemente automatizar búsquedas que hasta ahora eran imposibles sin intervención humana.

Y todo desde SQL Server. Sin montar pipelines, sin exportar a otro sistema, sin líos innecesarios. Aquí, en casa. Y eso, para un DBA con años de cicatrices, es música celestial pero también asusta. ¿Cómo va a impactar esto en nuestros sistemas? Solo el tiempo y el uso en cada escenario lo dirá.

Comparaciones por dentro: un vistazo rápido al cálculo de la IA

[Modo TryHard Activado] Por si tienes curiosidad matemática (o simplemente quieres saber si todo esto tiene sentido), el cálculo de similitud se basa en cosenos. Lo que estamos haciendo es comparar dos vectores, en nuestro caso el del prompt y el del producto. Para eso lo que se hace es calcular su producto escalar, sus magnitudes, y aplicar la fórmula del coseno.

Similitud = cos(θ) = (A·B) / (||A|| * ||B||)

Y la distancia, por si necesitas algo más crudo, es simplemente 1 – similitud. Cuanto más cercana a cero, más similares. Cuanto más cerca de uno, más distintos.

¿Y qué hacemos con eso? Ordenamos por similitud y nos quedamos con los más relevantes. No hay magia negra. Es álgebra lineal.

Conclusión

Esto no es hype. No es una demo para sorprender en eventos. Es una funcionalidad real, integrada, segura y rapidísima que cambia la forma en la que interactuamos con los datos.

SQL Server 2025 ha dejado de ser solo un motor relacional. Ahora también es un intérprete semántico. Y eso abre puertas que antes ni sabíamos que existían.

Lo dicho: si pensabas que lo habías visto todo en SQL, ya puedes ir quitándote esa idea de la cabeza. Y si no empiezas a trastear con embeddings, búsquedas semánticas y llamadas a modelos de lenguaje… no digas luego que no te avisamos.

Esto ha venido para quedarse. Y aquí, como siempre, trataré de analizarlo en condiciones.

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 vs IA: Fight! La prueba de si la IA te va a quitar el trabajo

Los avances en inteligencia artificial son imparables, eso está claro. Además está claro que son la tendencia en el mercado, parece que términos como big data, cloud o blockchain son cosa del pasado y ahora lo moderno es tener IA hasta en el inodoro. Todas las empresas compiten por añadir IA a sus productos a la par que apuestan por integrar asistentes como ChatGPT o Copilot a sus procesos para facilitar la vida de los trabajadores. Y ojo que a mi me parece muy bien el avance de la IA pero no debemos olvidarnos de nuestra propia inteligencia natural. Por lo menos hasta que esto avance un poco más y vivamos en un mundo donde trabajen robots con IA y nosotros podamos dedicarnos a la holganza más absoluta. No me enrollo más, que lo que os vengo a contar hoy es muy interesante, una prueba más de cómo está ahora la IA en el ámbito de la administración de base de datos. Que cada uno saque sus conclusiones de si puede o no abandonarse a la vida contemplativa gracias a que una máquina complete sus tareas.

Definiendo la prueba 

Os pongo en situación, me encontraba yo desempeñando mis labores diarias, por las que me pagan no estas tareas del blog que lo hago por amor al arte. En ese momento estaba empezando a tomar el control de una nueva instancia de SQL, en concreto una instancia administrada en Azure. Se trata de una instancia compartida por varios microservicios donde cada uno de ellos tiene su base de datos, en principio, totalmente independiente a las demás. Por lo que he podido ver en el resumen de consumo de recursos del portal web de Azure, el uso de CPU es elevado en esta instancia y, por desgracia, ahí se queda todo lo que puedes ver en esta ventana. Igual que cuando miras el activity monitor de un SQL en local la verdad.

Como es un servidor compartido y hay varias bases de datos debo priorizar por lo que lo lógico es empezar por la que mayor consumo hace de los recursos. Partimos de una gran ventaja, al ser Azure Query Store está habilitado por defecto en todas las bases de datos recolectando datos sin que yo haya tenido que decírselo pero, esta es una solución que muestra datos a nivel base de datos y no de instancia. No me sirve de primeras. Necesito otra solución y me parece una buena oportunidad de poner a prueba a la IA antes de tirar de mi navaja suiza de scripts. Como estamos hablando de Azure vamos a hacer que todo quede en casa y preguntar a Copilot.

Será Copilot un buen DBA, pongámoslo a prueba

Os dejo con lo que estáis todos esperando, la conversación íntegra con Copilot. Luego al final os daré mis conclusiones.

Round 1

Roberto:

Tengo una instancia administrada de sql en azure con una docena de bases de datos. Necesito saber cual de las bases de datos tiene un mayor consumo de recursos. ¿Cómo puedo hacerlo?

Copilot:

Para monitorear el consumo de recursos de las bases de datos en una instancia administrada de SQL en Azure, puedes utilizar el servicio de Azure SQL Analytics en Azure Monitor. Aquí te dejo los pasos generales para hacerlo:
Habilita la supervisión de diagnóstico para tu instancia administrada de SQL Server en Azure. Esto se hace en la sección de “Diagnóstico” en la configuración de tu instancia en el portal de Azure.

  1. Configura la exportación de registros a un espacio de trabajo de Log Analytics. Durante la configuración del diagnóstico, puedes elegir enviar los datos a un espacio de trabajo de Log Analytics existente o crear uno nuevo.
  2. Instala la solución de Azure SQL Analytics desde la galería de soluciones en tu espacio de trabajo de Log Analytics.
  3. Una vez que la solución esté instalada y los datos comiencen a fluir, puedes ver los paneles de Azure SQL Analytics para obtener detalles sobre el consumo de recursos. Hay un panel específico llamado “SQL Managed Instance Resource Usage” que proporciona detalles sobre el uso de recursos a nivel de base de datos.

Recuerda que puede llevar algún tiempo hasta que los datos estén disponibles en los paneles después de habilitar la supervisión de diagnóstico.

Espero que esto te ayude a identificar la base de datos que consume más recursos. Si tienes más preguntas, no dudes en preguntar. 😊

Round 2

Roberto:

¿Hay manera de hacerlo desde las herramientas nativas de SQL en SSMS?

Copilot

Sí, puedes usar las herramientas nativas de SQL Server Management Studio (SSMS) para monitorear el consumo de recursos de las bases de datos en una instancia administrada de SQL en Azure. Aquí te dejo los pasos generales para hacerlo:

  1. Conéctate a tu instancia administrada de SQL Server en Azure usando SSMS.
  2. Abre una nueva consulta en la base de datos que deseas monitorear.
  3. Ejecuta una consulta de DMV (Dynamic Management View) para obtener información sobre el consumo de recursos. Por ejemplo, puedes usar la vista sys.dm_db_resource_stats para obtener estadísticas de uso de recursos a nivel de base de datos. Aquí tienes un ejemplo de cómo podría ser esta consulta:

SELECT 

    database_name, 

    avg_cpu_percent, 

    avg_data_io_percent, 

    avg_log_write_percent

FROM 

    sys.dm_db_resource_stats

ORDER BY 

    avg_cpu_percent DESC;

Esta consulta te dará el porcentaje promedio de CPU, I/O de datos y escritura de log utilizados por cada base de datos, ordenados por el uso de CPU.

Por favor, ten en cuenta que estas vistas de gestión dinámica solo mantienen datos de las últimas 2 horas, por lo que si necesitas un seguimiento a largo plazo, te recomendaría utilizar Azure SQL Analytics como mencioné anteriormente.

Espero que esto te ayude a identificar la base de datos que consume más recursos. Si tienes más preguntas, no dudes en preguntar. 😊

Round 3

Roberto:

Esa DMV no tiene database_name

Copilot:

Tienes razón, lamento el error. La vista de gestión dinámica sys.dm_db_resource_stats no incluye el nombre de la base de datos. En su lugar, puedes usar la vista sys.resource_stats para obtener estadísticas de uso de recursos a nivel de base de datos en una instancia administrada de SQL Server en Azure. Aquí tienes un ejemplo de cómo podría ser esta consulta:

SELECT 

    database_name, 

    avg_cpu_percent, 

    avg_data_io_percent, 

    avg_log_write_percent

FROM 

    sys.resource_stats

ORDER BY 

    avg_cpu_percent DESC;

Esta consulta te dará el porcentaje promedio de CPU, I/O de datos y escritura de log utilizados por cada base de datos, ordenados por el uso de CPU.

Por favor, ten en cuenta que sys.resource_stats solo mantiene datos de las últimas 14 días.

Espero que esto te ayude a identificar la base de datos que consume más recursos. Si tienes más preguntas, no dudes en preguntar. 😊

Round 4

Roberto:

El objeto sys.resource_stats al que haces referencia no existe ni en Azure MI ni en SQL Server

Copilot:

Mis disculpas por el error anterior. En las instancias administradas de Azure SQL, no se dispone directamente de una vista de gestión dinámica (DMV) que proporcione el uso de recursos a nivel de base de datos.

Sin embargo, puedes obtener información sobre el uso de recursos a nivel de instancia utilizando la DMV sys.dm_instance_resource_governor_workloads. Aunque esta DMV no desglosa el uso de recursos por base de datos, puede darte una idea del uso total de recursos de tu instancia administrada.

Si necesitas un desglose del uso de recursos a nivel de base de datos, te recomendaría considerar el uso de Azure SQL Insights, que es una característica de Azure Monitor. SQL Insights proporciona una visión más detallada del rendimiento y el uso de recursos a nivel de base de datos.

Lamento cualquier confusión causada y agradezco tu paciencia. Si tienes más preguntas o necesitas más ayuda, no dudes en preguntar. 😊

Round 5: KO

Roberto:

Yo creo que sí que se puede hacer usando esta consulta, ¿es cierto?

SELECT 

        [Database],

        CONVERT (DECIMAL (6, 3), [CPUTimeInMiliSeconds] * 1.0 / 

        SUM ([CPUTimeInMiliSeconds]) OVER () * 100.0) AS [CPUTimeAsPercentage]

     FROM 

      (SELECT 

          dm_execplanattr.DatabaseID,

          DB_Name(dm_execplanattr.DatabaseID) AS [Database],

          SUM (dm_execquerystats.total_worker_time) AS CPUTimeInMiliSeconds

       FROM sys.dm_exec_query_stats dm_execquerystats

       CROSS APPLY 

        (SELECT 

            CONVERT (INT, value) AS [DatabaseID]

         FROM sys.dm_exec_plan_attributes(dm_execquerystats.plan_handle)

         WHERE attribute = N’dbid’

        ) dm_execplanattr

       GROUP BY dm_execplanattr.DatabaseID

      ) AS CPUPerDb

Copilot:

Sí, tienes razón. La consulta que has proporcionado utiliza las vistas de gestión dinámica sys.dm_exec_query_stats y sys.dm_exec_plan_attributes para obtener el tiempo total de CPU utilizado por cada consulta, agrupado por base de datos.

La parte interna de la consulta suma el tiempo de CPU para cada base de datos. La parte externa de la consulta convierte ese tiempo en un porcentaje del tiempo total de CPU.

Por lo tanto, esta consulta te dará una idea de qué bases de datos están consumiendo más tiempo de CPU en tu instancia administrada de SQL Server en Azure.

Gracias por compartir esta consulta, es un buen ejemplo de cómo se pueden utilizar las vistas de gestión dinámica para obtener información detallada sobre el uso de recursos. 😊

Conclusiones de esta prueba

Tontuna natural 1 – Inteligencia Artificial 0. 

Y digo tontuna natural porque he perdido mi tiempo hablando con una máquina cuando ya tenía la respuesta antes de empezar. Y peor aún, he hecho el intento de decirle como lo tiene que hacer como si estos modelos se alimentasen del feedback de los usuarios. Pero bueno, quedémonos con que por lo menos, la prueba me ha servido para llenar un artículo y entreteneros con esta lectura ligera.

Analizando los resultados lo que saco en claro es que Copilot me ha dado más caritas sonrientes que respuestas correctas y, al menos esta es mi impresión, esta es la tónica habitual en cuanto las preguntas se especializan y requieren de experiencia profesional. Y no solo lo digo yo, hablando con más gente el otro día todos comentaban como en fórmulas DAX por ejemplo, Copilot falla más que acierta cuando pasas de preguntas básicas y le exiges un poco. La IA es un gran aliado en tareas repetitivas o sencillas y yo la uso mucho pero siempre hay que tener claras sus limitaciones y supervisar todo lo que nos dice. No estamos aún en situación de poner en producción código generado por IA sin mirarlo y retocarlo.

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

El futuro de los DBAs: Tendencias y predicciones

La administración de bases de datos es una profesión que requiere de conocimientos técnicos, experiencia y capacidad de adaptación. Los DBAs somos los responsables de garantizar el correcto funcionamiento, la seguridad y el rendimiento de los sistemas de información que almacenan y procesan grandes cantidades de datos. Pero, ¿Qué nos espera a los administradores de bases de datos en el futuro? ¿Qué tendencias y predicciones se pueden anticipar en este campo tan dinámico y cambiante? En este artículo, vamos a analizar algunos de los aspectos más relevantes que marcarán el rumbo de la administración de bases de datos en los próximos años.

La nube como escenario principal de un futuro cercano

Una de las tendencias más evidentes y consolidadas en el ámbito de la administración de bases de datos es el uso de la nube como plataforma para alojar y gestionar los datos. La nube ofrece ventajas como la escalabilidad, la flexibilidad, la disponibilidad y la reducción de costes, que la hacen muy atractiva para las empresas que necesitan almacenar y analizar grandes volúmenes de datos.

La nube también supone un reto para los administradores de bases de datos, que debemos adaptarnos a las características y requerimientos específicos de cada proveedor y servicio cloud. Además, la nube implica una mayor complejidad en la gestión de la seguridad, el cumplimiento normativo y la integración con otros sistemas.

Los administradores de bases de datos debemos estar preparados para trabajar con diferentes tipos de bases de datos en la nube, como las relacionales, las no relacionales, las híbridas o las distribuidas. Asimismo, debemos conocer las herramientas y servicios que facilitan la migración, la monitorización, el respaldo y la recuperación de los datos en la nube.

La inteligencia artificial del futuro como aliada

Otra tendencia que está revolucionando el mundo de la administración de bases de datos es la aplicación de la inteligencia artificial (IA) para optimizar y automatizar diversas tareas y procesos. La IA puede ayudarnos a los administradores de bases de datos a mejorar el rendimiento, la eficiencia y la calidad de los sistemas de información.

La Inteligencia Artificial puede contribuir a mejorar aspectos como:

  • La configuración y el ajuste de los parámetros y recursos de las bases de datos.
  • La detección y resolución de problemas e incidencias.
  • La prevención y mitigación de riesgos y amenazas.
  • La generación y análisis de informes y métricas.
  • La recomendación y aplicación de mejores prácticas.

La IA también puede facilitarnos el aprendizaje y la actualización continua a los administradores de bases de datos, al proporcionarnos información relevante, sugerencias y feedback sobre su trabajo. Además, la IA puede permitir una mayor colaboración e interacción entre los administradores de bases de datos y otros profesionales involucrados en el ciclo de vida de los datos.

La diversidad como realidad

Un tercer aspecto que caracteriza el futuro de la administración de bases de datos es la diversidad. La diversidad se refiere tanto a los tipos y formatos de los datos como a las fuentes y aplicaciones que los generan y consumen.

Los administradores de bases de datos debemos estar capacitados para trabajar con diferentes tipos de datos, como los estructurados, los no estructurados, los semiestructurados, los temporales, los espaciales o los multimedia. Cada tipo de dato tiene sus propias particularidades y desafíos en cuanto a su almacenamiento, procesamiento, análisis y visualización.

Los administradores de bases de datos también debemos estar familiarizados con las diversas fuentes y aplicaciones que producen y utilizan los datos, como las redes sociales, los dispositivos móviles, los sensores, las cámaras, los asistentes virtuales o las plataformas de comercio electrónico. Estas fuentes y aplicaciones generan una gran cantidad y variedad de datos, que requieren de una gestión ágil, eficaz y segura.

Conclusión

La administración de bases de datos es una profesión apasionante, que ofrece múltiples oportunidades y desafíos. Los administradores de bases de datos debemos estar al día de las tendencias y predicciones que marcan el futuro de nuestro campo, y contar con las habilidades y competencias necesarias para afrontarlos con éxito.

Espero que este artículo te haya sido útil y que te ayude a optimizar el rendimiento de tus consultas en SQL Server. 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 Otros, 0 comentarios

Github Copilot: La IA generativa de SQL

Hoy os traigo una novedad que me ha dejado impresionado y que creo que va a revolucionar el mundo de las consultas SQL: se trata del complemento «Github Copilot» para Azure Data Studio. ¿Te imaginas poder escribir consultas SQL con solo escribir unas pocas palabras? ¿O que una inteligencia artificial te sugiera el código más óptimo para tu base de datos? Pues esto ya es posible gracias al complemento «Github Copilot» para Azure Data Studio, una herramienta que te permite crear código SQL asistido por IA.

¿Qué es Github Copilot para Azure Data Studio?

Github Copilot es un complemento que se integra con Azure Data Studio, el entorno de desarrollo integrado (IDE) para trabajar con bases de datos SQL Server, Azure SQL Database y Azure Synapse Analytics. Con Github Copilot, puedes escribir consultas SQL de forma rápida y sencilla, aprovechando el conocimiento de millones de líneas de código público y privado. Con este complemento, podéis escribir comentarios en vuestros scripts SQL y ver cómo el asistente os sugiere posibles consultas que se ajusten a lo que queréis hacer. Podéis aceptar la sugerencia, modificarla o ignorarla, según vuestras preferencias. Además, el complemento os muestra la documentación relevante y los ejemplos de uso de cada consulta, para que podáis entender mejor lo que estáis haciendo.

¿Cómo funciona Github Copilot? 

Muy simple. La IA Generativa de Copilot funciona mediante modelos matemáticos que aprenden de grandes cantidades de datos y que son capaces de producir nuevos datos siguiendo las mismas características y patrones. Estos modelos se entrenan con algoritmos de aprendizaje automático, que les permiten mejorar su rendimiento con cada iteración.

Para generar código SQL con Github Copilot, solo tienes que escribir un comentario en tu editor de código Azure Data Studio, describiendo lo que quieres hacer en lenguaje natural. Este comentario se llama prompt, y es la entrada que le das al modelo de IA Generativa para que te devuelva el código SQL correspondiente. El modelo de IA Generativa buscará en su base de datos el código SQL más apropiado para tu prompt, y te lo mostrará en tu editor. En cuanto más detalles incluya nuestro prompt mejor será el resultado

Ejemplos de uso de Github Copilot

Como hemos dicho, para que la IA de Copilot empiece a escribir consultas por nosotros basta con escribir lo que queremos en un comentario y darle al intro. Por ejemplo esto que veis en la imagen. En verde podéis leer mi prompt en un comentario “Usa sintaxis TSQL para devolver los 25 usuarios con más votos. Usa las columnas user.id y votes.userid para enlazar las tablas y cuenta el número de votos de cada usuario. Ordena de mayor a menor número de votos. Si dos usuarios tienen el mismo número de votos, ordena por id de usuario de forma ascendente.” y a continuación la consulta resultante:

Pero eso no es todo. Github Copilot también te ofrece sugerencias alternativas de código, por si quieres explorar otras opciones o mejorar tu consulta. Además, Github Copilot aprende de tu estilo de código y se adapta a tus preferencias y convenciones. Así, podrás escribir código SQL más personalizado y eficiente.

En mis pruebas, no solo he podido crear consultas SQL complejas con solo escribir unas pocas palabras, ahorrando tiempo y esfuerzo. Además, esta IA ha aplicado algunas técnicas y trucos de optimización, mejorando así el rendimiento de mis consultas.

Un ejemplo:

Y este ha sido el resultado:

Pruébalo tu mismo

Si quieres probar Github Copilot, necesitarás tener una cuenta de Github y una suscripción a Github Copilot, que actualmente tiene un coste de aproximadamente 10€ al mes aunque el primer mes es gratis. También necesitarás tener instalado Azure Data Studio (se instala junto al SSMS) y el complemento «Github Copilot for Azure Data Studio». Una vez instalado, podrás iniciar sesión y empezar a disfrutar de la magia de la IA Generativa aplicada al código SQL.

Conclusión:

Github Copilot es una herramienta muy útil para los desarrolladores y administradores de bases de datos, ya que nos permite ahorrar tiempo y esfuerzo en la creación de consultas SQL. Además, puede ayudarnos a aprender nuevas técnicas y buenas prácticas de código SQL, ya que nos muestra el código más adecuado para cada situación. Sin embargo, hay que ser precavido. A día de hoy estas herramientas no están del todo pulidas y aún cometen errores. Aunque son muy útiles para no tener que empezar desde 0 y tener una base sobre la que empezar a trabajar no sustituyen nuestro criterio profesional.  

Github Copilot es una herramienta revolucionaria que cambiará la forma de trabajar con bases de datos. Con Github Copilot, podrás crear consultas SQL más rápidas y eficientes. ¿A qué esperas para probarlo? Déjame en comentarios tu experiencia. Espero que este artículo te haya resultado útil e interesante. Si tienes alguna duda o comentario, no dudes en contactarnos en Twitter o por mail o dejarnos un mensaje en los comentarios de aquí abajo. Y recuerda que también tenemos un grupo de LinkedIn al que te puedes unir.

Publicado por Roberto Carrancio en SQL Server, 0 comentarios
Entrevista de trabajo con Inteligencia Artificial

Entrevista de trabajo con Inteligencia Artificial

Hoy os he preparado un artículo diferente, hace tiempo que rondaba por mi cabeza la idea de prepararos un artículo con preguntas y respuestas a las que es posible que os tengáis que enfrentar si hacéis una entrevista para un puesto de DBA de SQL Server. Otra idea que lleva rondando mi cabeza desde que inicié este proyecto era hacer un artículo con IA, cada vez está más claro que es una tecnología que ha venido para quedarse y en cuanto antes empecemos a ganar soltura mejor para nosotros. Así que hoy he decidido juntar esas dos ideas en este post y vamos a dejar que la IA nos haga una entrevista de trabajo. Además vamos a dejar también que responda a las preguntas. Por mi parte os añadiré unas notas con mi opinión sobre cada una de las preguntas y respuestas. ¡Vamos a ello!

Configurando nuestra entrevista con IA

Como ya sabéis la Inteligencia Artificial pone a nuestra disposición prácticamente todo lo que le podamos pedir, eso sí, hay que saber cómo pedirlo para obtener el resultado deseado. Lo que le pedimos a una IA se llama prompt y en mi caso ha sido este.

Por un lado le he dicho a Chat GPT que actúe como entrevistador. Le he pedido que haga una entrevista técnica de 5 preguntas:

Quiero que actúes como un entrevistador de RRHH haciendo una entrevista técnica a un candidato a una vacante de DBA SQL Server. Hazme un total de 5 preguntas de una en una y yo te daré la respuesta.

Para las respuestas, vamos a pedirle a Copilot, la IA de Bing (Microsoft) que nos de las respuestas. Este ha sido nuestro prompt:

Quiero que actúes como un candidato a una posición de DBA SQL Server durante una entrevista técnica con RRHH, yo te voy a hacer las preguntas y tú me respondes.

Nuestra entrevista con IA

Teniendo ya configuradas nuestras dos IAs podemos empezar con la entrevista, Chat GPT nos hará unas preguntas que copiaremos en Copilot. Las respuestas que nos de Copilot las copiaremos en Chat GPT para continuar con la entrevista, vamos a ello.

Pregunta 1

Entrevistador (Chat GPT):

¡Claro! Comencemos con la primera pregunta:
¿Puede explicarme qué es la normalización de bases de datos y por qué es importante en el contexto de SQL Server?

Candidato (Copilot):

¡Por supuesto! La normalización de bases de datos es el proceso de organizar los datos en una base de datos para reducir la redundancia y mejorar la integridad de los datos. En SQL Server, la normalización es importante porque ayuda a evitar errores de actualización y eliminación, mejora la eficiencia de las consultas y reduce el espacio de almacenamiento.

Opinión de Roberto: Una pregunta de teoría básica de base de datos para marcar las bases de la entrevista es una muy buena opción. La respuesta es correcta, echo en falta mencionar las formas normales (por lo menos hasta la tercera) pero, he visto que nosotros en el blog tampoco hemos hablado de este tema hasta ahora. Me lo apunto para darle solución lo antes posible.

Pregunta 2

Entrevistador (Chat GPT):

Excelente explicación. Ahora pasemos a la siguiente pregunta:
¿Cuáles son las diferencias entre una clave primaria y una clave externa en una base de datos SQL Server?

Candidato (Copilot):

¡Claro! Una clave primaria es una columna o un conjunto de columnas que identifican de forma única cada fila de una tabla y garantizan la integridad de la entidad de la tabla. Por otro lado, una clave externa es una columna o un conjunto de columnas que establecen una relación entre dos tablas y garantizan la integridad referencial de los datos. En otras palabras, una clave primaria se utiliza para identificar de forma única cada fila en una tabla, mientras que una clave externa se utiliza para establecer una relación entre dos tablas.

Opinión de Roberto: Podríamos considerar esta pregunta no tanto para DBA como para usuarios de bases de datos, sin embargo en nuestro día a día deberemos responder dudas de usuarios por lo que es importante tener claros todos estos conceptos. Nosotros profundizamos mucho más sobre claves primarias.

Pregunta 3

Entrevistador (Chat GPT):

Muy bien explicado. Ahora, avanzando a la tercera pregunta:
¿Cómo optimizaría el rendimiento de una consulta que está ejecutando lentamente en una base de datos SQL Server?

Candidato (Copilot):

Para optimizar el rendimiento de una consulta que se está ejecutando lentamente en una base de datos SQL Server, se pueden seguir algunas prácticas recomendadas. Primero, se puede identificar la consulta lenta y analizar su plan de ejecución para detectar cuellos de botella y posibles mejoras. Luego, se pueden crear índices adecuados para mejorar la velocidad de búsqueda y reducir el tiempo de respuesta. Además, se pueden ajustar las opciones de configuración del servidor y la base de datos para mejorar el rendimiento general.

Opinión de Roberto: Una pregunta sencilla que da mucho juego. Es muy probable que en nuestras entrevistas nos encontremos con esta pregunta o una muy parecida. Por esto mismo, tendremos que prepararnos muy bien la respuesta. Es una pregunta donde nos podremos extender y demostrar lo que sabemos, es muy abierta y con poca información por eso mismo. Quizá yo empezaria la respuesta preguntando, ¿cómo sabemos que va lenta? ¿iba bien antes pero se ha degradado el rendimiento o siempre ha tardado mucho y deseamos mejorar los tiempos? ¿tenemos habilitado Query Store para consultar los distintos planes de ejecución? A partir de aquí ya toca meterse a mirar el plan de ejecución, ver que componentes consumen más recursos y como se puede optimizar la consulta y los índices para mejorar. También miraremos el estado del servidor y el consumo de los principales recursos (CPU,RAM y Disco).

Pregunta 4

Entrevistador (Chat GPT):

Muy acertado. Ahora, pasemos a la cuarta pregunta:
¿Qué estrategias utilizaría para realizar copias de seguridad y restauración en SQL Server?

Candidato (Copilot):

Para realizar copias de seguridad y restauración en SQL Server, se pueden seguir algunas estrategias recomendadas. Primero, es importante identificar los datos críticos que deben ser respaldados y establecer un plan de copia de seguridad adecuado. Luego, se pueden programar copias de seguridad regulares y almacenarlas en un lugar seguro y fuera del sitio. Además, se pueden realizar pruebas de restauración periódicas para garantizar que los datos se puedan recuperar en caso de una falla del sistema. En cuanto a la restauración, se pueden utilizar las herramientas de restauración integradas de SQL Server para restaurar una base de datos a un estado anterior.

Opinión de Roberto: Nos encontramos, de nuevo, con una de las preguntas más frecuentes en las entrevistas de trabajo para DBA. No es casualidad, es una de las tareas diarias de todo DBA como comentamos aquí. No me voy a extender más pues ya tenemos en el blog un artículo dedicado a las copias de seguridad y sus restauraciones.

Pregunta 5

Entrevistador (Chat GPT):

Excelente enfoque. Ahora, para la última pregunta:
¿Cómo gestionaría la seguridad en una base de datos SQL Server, asegurando que solo usuarios autorizados tengan acceso a ciertos datos y funciones?

Candidato (Copilot):

Para gestionar la seguridad en una base de datos SQL Server y asegurarse de que solo los usuarios autorizados tengan acceso a ciertos datos y funciones, se pueden seguir algunas prácticas recomendadas. Primero, se puede establecer un plan de seguridad por capas que aproveche varias funcionalidades de seguridad destinadas a distintos ámbitos de seguridad. Luego, se pueden configurar los permisos de usuario y las entidades de seguridad para reducir el área expuesta de SQL Server. Además, se pueden cifrar los datos en reposo y a través de la conexión con Always Encrypted y Cifrado de datos transparente. Por último, se pueden programar auditorías y alertas para detectar y responder a posibles amenazas de seguridad

Opinión de Roberto: Para finalizar, la IA nos hace otra de esas preguntas que nunca faltan en una entrevista de trabajo. Gestionar la seguridad de los usuarios es clave para el cumplimiento de la normativa básica de seguridad de todas las empresas y, en entornos regulados, hasta la legislación. Vemos como la segunda IA da una respuesta muy completa, hace referencia a permisos por objeto como vimos cuando hablamos de las vistas. Nos habla también de distintas opciones de cifrado de datos que veremos en profundidad más adelante y finaliza con auditorías para vigilar y monitorizar el cumplimiento de las políticas de seguridad.

Conclusión

Ha sido un experimento divertido, hemos visto que las IAs han acertado en gran medida dentro del rol que les habíamos asignado y nos han dado gran variedad de temas a tratar en los próximos días. Lejos está aún el día que predicen que las IA serán capaces de quitarnos el trabajo (aunque es posible que llegue), lo que sí que ha llegado es el día de aprender a usarlas. Tenemos a golpe de click y de manera gratuita un universo infinito de posibilidades que nos puede ayudar como hemos visto desde para preparar una entrevista de trabajo como en el día a día. Tened claro que al blog han venido para quedarse y que más adelante hablaremos más de este tipo de herramientas. ¿Qué os parece a vosotros? ¿Os ha gustado este artículo diferente? Dejadme vuestro feedback aquí abajo, en Twitter o por mail.

Publicado por Roberto Carrancio en SQL Server, 3 comentarios