¡Hola, chicos! ¿Cómo estás?
Recientemente tuve el placer de participar de una sensacional transmisión en vivo por el canal .NET con el maestro Renato Groff, donde profundizamos de lleno en lo más moderno en Inteligencia Artificial aplicada a Bases de Datos.
Si pensaba que la IA era sólo para desarrolladores front-end o científicos de datos, prepárese: el juego ha cambiado y SQL Server 2025 está aquí para demostrarlo.
En esta publicación, resumiré los puntos principales que creamos en vivo, enfocándonos en la integración nativa de SQL Server con Azure Open AI y cómo monitorear todo esto con OpenTelemetry y Grafana.
Enlace de transmisión
El salto a SQL Server 2025
La gran estrella de la noche fue el anuncio de las capacidades del SQL Server 2025 (vista previa pública). Microsoft finalmente trajo a “on-premises” (y a SQL Database) una característica que anteriormente dependía de soluciones complejas o CLR: la ejecución nativa de llamadas REST.
A través del procedimiento del sistema. sp_invoke_external_rest_endpoint, ahora podemos comunicarnos con cualquier API, incluida Azure Open AI, sin salir de nuestra consulta.
Arquitectura de integración: Azure Open AI
Para que esta magia suceda, utilizamos el modelo. GPT-4o mini. ¿Por qué el “mini”? Simple: Costo-Beneficio. Es absurdamente más barato que el GPT-4o completo (entre 20 y 30 veces menos) y ofrece una precisión excelente para tareas de bases de datos, como generar comandos T-SQL o resumir registros.
Seguridad: uso de credenciales con ámbito de base de datos para evitar fugas de credenciales
Como profesional Senior, lo primero que pienso es: “¿Voy a exponer mi API Key en texto claro?”. Nunca.
Una buena práctica aquí es utilizar el Credenciales con alcance de base de datos: Creamos una credencial que almacena el token de autorización, de modo que el desarrollador que llama al procedimiento no tiene acceso a la clave API, solo al nombre de la credencial.
El script: convertir SQL Server en un DBA virtual
A continuación, te presento el script completo para configurar esta integración y crear un procedimiento que interprete el lenguaje natural y ejecute comandos en tu base de datos.
-- Cria a masterkey do banco
IF NOT EXISTS(SELECT * FROM sys.symmetric_keys WHERE [name] = '##MS_DatabaseMasterKey##')
BEGIN
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'LONg_Pa$$_w0rd!'
END
GO
-- Cria as credenciais
IF EXISTS(SELECT * FROM sys.database_scoped_credentials WHERE [name] = 'https://dirceu-openai.openai.azure.com')
BEGIN
DROP DATABASE SCOPED CREDENTIAL [https://dirceu-openai.openai.azure.com]
END;
DECLARE
@Query VARCHAR(MAX)
SET @Query = 'CREATE DATABASE SCOPED CREDENTIAL [https://dirceu-openai.openai.azure.com] WITH IDENTITY = ''HTTPEndpointHeaders'', SECRET = ''{"Authorization": "Bearer ' + CONVERT(VARCHAR(MAX), 'Chave_API_AQUI') + '"}'''
EXEC(@Query)
CREATE OR ALTER PROCEDURE dbo.stpExecuta_SQL_IA (
@Prompt VARCHAR(MAX),
@Fl_Debug BIT = 0
)
AS
BEGIN
-- Executa a API
DECLARE
@ret INT,
@response NVARCHAR(MAX),
@payload VARCHAR(MAX) = '{
"messages": [
{
"role": "system",
"content": [
{
"type": "text",
"text": "Essas são as instruções básicas para você: Você é um DBA SQL Server. Tudo que eu te perguntar, você deve responder apenas com comandos T-SQL. NUNCA, JAMAIS, EM NENHUMA HIPÓTESE, VOCÊ DEVERÁ ME RESPONDER COM QUALQUER MENSAGEM OU NENHUM CARACTERE QUE NÃO SEJA PARTE DE UM CÓDIGO T-SQL. Se limite a responder apenas o que eu perguntar, com comandos T-SQL. Se não for possível responder ou for uma pergunta que não faça sentido do ponto de vista de um banco SQL Server, não responda nada, retorne vazio. O que eu quero saber é: ' + @Prompt + '"
}
]
}
],
"temperature": 0.7,
"top_p": 0.95,
"max_tokens": 8000
}'
EXEC @ret = sys.sp_invoke_external_rest_endpoint
@method = 'POST',
@url = N'https://dirceu-openai.openai.azure.com/openai/deployments/gpt-4o-mini/chat/completions?api-version=2025-01-01-preview',
@payload = @payload,
@credential = [https://dirceu-openai.openai.azure.com],
@response = @response OUTPUT
-- PRINT @response
DECLARE @retorno VARCHAR(MAX)
SET @retorno = JSON_VALUE(@response, '$.result.choices[0].message.content')
SET @retorno = REPLACE(REPLACE(@retorno, '```sql', ''), '```', '')
PRINT @retorno
IF (LEN(TRIM(@retorno)) > 0 AND @Fl_Debug = 0)
EXEC(@retorno)
END
-- EXEC dbo.stpExecuta_SQL_IA 'Quero criar uma tabela chamada Clientes com os campos nome, cpf e idade. Se a tabela já existir, pode excluir.'
-- EXEC dbo.stpExecuta_SQL_IA 'Quero criar uma tabela chamada Clientes com os campos nome, cpf e idade. Se a tabela já existir, pode excluir.'
-- EXEC dbo.stpExecuta_SQL_IA 'Na minha tabela de Clientes, que tem os campos nome, cpf (char(11)) e idade, insere 50 registros.'
-- EXEC dbo.stpExecuta_SQL_IA 'Retorne as colunas nome e idade da minha tabela de clientes'
-- EXEC dbo.stpExecuta_SQL_IA 'Retorne os dados da minha tabela de clientes onde a idade seja igual a 36'
-- EXEC dbo.stpExecuta_SQL_IA 'Retorne os dados da minha tabela de clientes onde a idade seja igual a 36 ou 38 ou 40'
-- EXEC dbo.stpExecuta_SQL_IA 'Retorne os dados da minha tabela de clientes onde a idade seja igual a 36 ou 38 ou 40 e o final do cpf termine com um número par'
-- EXEC dbo.stpExecuta_SQL_IA 'Quero criar uma tabela com de clientes com os campos nome, cpf e idade. Se a tabela já existir, pode excluir. Insere 50 registros nessa tabela e retorna os dados', @Fl_Debug = 0
Observabilidad y seguimiento
No basta con integrarse, hay que monitorearlo. Durante la demostración, Renato Groff mostró cómo Núcleo semántico y el OpenTelemetría son vitales.
Cuando SQL Server realiza una llamada a la IA, generamos fichas. Estos tokens cuestan dinero. Al instrumentar la aplicación con Grafana y Aloy, pudimos capturar:
- Tokens de entrada frente a tokens de salida: ¿Cuánto estamos gastando por pregunta?
- Tipos de espera: Supervise la latencia de la red en la llamada API (tenga cuidado con las esperas de la red que pueden bloquear a los trabajadores de SQL).
- ID de seguimiento: Vincular la pregunta del usuario en el front-end con la consulta generada por IA en la base de datos.
Tabla de referencia: límites y tokens
Para ayudar con la planificación de costos, aquí hay una estimación simplificada para el modelo mini GPT-4o:
| Modelo | Costo de entrada (1 millón de tokens) | Costo de producción (1 millón de tokens) | Uso recomendado |
|---|---|---|---|
| GPT-4o | $5.00 | $15.00 | Lógica compleja y análisis de errores. |
| GPT-4o mini | $0.15 | $0.60 | Consultas SQL simples y resúmenes. |
Rendimiento e impacto
Al usar el sp_invoke_external_rest_endpoint, SQL Server administra la conexión HTTP de forma asincrónica internamente, pero la sesión del usuario está en espera hasta que regresa la API. En entornos altamente competitivos, esto puede aumentar los contadores de espera externa.
El consejo es utilizar esta funcionalidad para tareas en segundo plano, BI o herramientas administrativas, evitando el flujo principal de registro de transacciones (OLTP).
Espero que te haya gustado este tip, un fuerte abrazo y ¡hasta la próxima!
Comentários (0)
Carregando comentários…