Noticias

La IA en Ubuntu se encuentra con SQL Server 2025

Desde que Microsoft anunció su intención de hacer de Linux un ciudadano de primera clase en su ecosistema en 2016, Canonical y Microsoft han estado trabajando juntos para hacer realidad esta visión. Ubuntu es una de las primeras distribuciones que admite esta característica Avance Servidor SQL en Linux. ubuntu es primera asignación Esta característica estaba disponible en la versión del Subsistema de Windows para Linux (WSL) y permanece por defecto Hasta hoy. Ubuntu es también la primera distribución de Linux compatible con Azure Máquina virtual confidencial.

SQL Server ha sido la piedra angular de la colaboración continua para brindar a los desarrolladores y empresas una experiencia Linux perfecta. Trabajamos juntos para satisfacer las crecientes necesidades de los clientes a través de una gama de productos conjuntos, tanto listos para usar como conjuntos. Configuraciones admitidas Disponible para SQL Server en Ubuntu. En este artículo, veremos nuestra última colaboración: SQL Server 2025 en Ubuntu.

este SQL Server 2025 lanzado oficialmente en Ubuntu 24.04 es un hito en nuestra asociación. SQL Server 2025 trae varios nuevas característicasincluidas nuevas capacidades de IA, como la búsqueda de vectores y la integración de modelos de IA externos. A continuación le mostramos cómo puede poner en funcionamiento estas nuevas funciones.

Tu nuevo patio de juegos de IA

Implementar una instancia de servidor de base de datos

Comencemos instalando LXD, nuestra herramienta Canonical para administrar fácilmente máquinas virtuales y contenedores.

sudo snap install lxd 
sudo snap list | awk '/lxd/ {print $3}'
sudo lxd init --minimal # configure LXD

Ahora creemos una máquina virtual como patio de recreo:

sudo lxc launch ubuntu:24.04 mssql25 --vm -c limits.cpu=4 -c limits.memory=6GiB -d root,size=24GiB

A continuación, instalaremos todos los requisitos previos necesarios para ejecutar SQL Server 2017:

sudo lxc exec mssql25 bash
su -l ubuntu
# Like always, we start by updating our packages
sudo apt -y update && sudo apt -y upgrade

# Download and trust the Microsoft key 
curl -fsSL  | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg

# Register the SQL Server repository
curl -fsSL  | sudo tee /etc/apt/sources.list.d/mssql-server-2025.list

# Ensures new repositories are loaded
sudo apt-get update

# Install SQL server and a password generator
sudo apt-get install -y mssql-server pwgen

Ahora configuremos el SQL Server instalado para obtener una instancia en ejecución de la siguiente manera:

PW="$(pwgen -sB 22 1)" # Generates SQL Server compliant-password
# Prepare some environment variables to setup SQL Server
install -d -m 700 ~/.secrets/sql
install -m 600 /dev/null ~/.secrets/sql/mssql.env

cat > ~/.secrets/sql/mssql.env <

Ahora instalaremos algunas herramientas adicionales para poder conectarnos a SQL Server.

# Download the deb package
curl -sSL -O  VERSION_ID /etc/os-release | cut -d '"' -f 2)/packages-microsoft-prod.deb
# Install the downloaded deb package
sudo dpkg -i packages-microsoft-prod.deb
# Delete the downloaded package
rm packages-microsoft-prod.deb
# Install Microsoft's ODBC driver and additional tools
sudo apt-get update
sudo apt-get install -y msodbcsql18  mssql-tools18 unixodbc-dev libodbc2
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

Ejecutaremos una consulta para comprobar que todo funciona como se esperaba:

/opt/mssql-tools18/bin/sqlcmd -S 127.0.0.1 -U sa -No -C -P "$SQLCMDPASSWORD"
SELECT @@VERSION AS 'SQL Server Version';
GO

Lo anterior debería devolver la versión exacta de SQL Server que está ejecutando. Hasta ahora, hemos tenido interacciones simples con SQL Server. En la siguiente parte, probaremos algunas de las nuevas e interesantes funciones de la versión 2025.

Vector

Los tipos de vectores son matrices contiguas de números de longitud fija diseñadas para admitir la ejecución de vectorización acelerada por hardware (SIMD). Los tipos vectoriales son el tipo perfecto para almacenar incrustaciones (es decir, representaciones numéricas) de objetos sobre los que operan los modelos de IA, como texto e imágenes. Creemos una tabla que contenga columnas de tipo vectorial de la siguiente manera:

CREATE DATABASE DemoDb;
GO

USE DemoDb;
GO

ALTER DATABASE SCOPED CONFIGURATION SET PREVIEW_FEATURES = ON;
CREATE TABLE dbo.VectorDemo (id INT IDENTITY(1,1) PRIMARY KEY, embedding VECTOR(3) NOT NULL);
GO

INSERT INTO dbo.VectorDemo (embedding) VALUES ('[2,3,5]'), ('[7,11,13]'), ('[17,19,23]');
GO

DECLARE @q VECTOR(3) = '[7,11,13]';
SELECT embedding, VECTOR_DISTANCE('euclidean', embedding, @q) AS distance FROM dbo.VectorDemo ORDER BY distance;
GO

DECLARE @q2 VECTOR(3) = '[7,11,13]';
SELECT embedding, VECTOR_DISTANCE('cosine', embedding, @q2) AS distance FROM dbo.VectorDemo ORDER BY distance;
GO
exit

Hemos examinado cómo crear tipos de vectores y cómo utilizar operadores de distancia vectoriales. A continuación, proporcionamos un ejemplo de caso de uso más avanzado que implica invocar un modelo de IA y realizar una búsqueda de similitud.

Integración del modelo de inteligencia artificial

Una de las características más interesantes de SQL Server 2025 es la capacidad de llamar fácilmente modelos de IA desde la base de datos de forma estructurada. Comprobemos cómo:

Implementación del modelo de IA

Primero implementaremos el modelo integrado local usando Ollama.

curl -fsSL  | sh # Installs ollama
ollama pull nomic-embed-text # Pulls an embedding model
curl -k   # Checks the api endpoint

Implementar proxy http

SQL Server 2025 requiere que los puntos finales del modelo se expongan mediante https (no simplemente http). Por lo tanto, implementaremos y configuraremos Caddy para este propósito de la siguiente manera:

sudo apt install -y caddy 

sudo cp /etc/caddy/Caddyfile /etc/caddy/Caddyfile.bak # Keep  a backup

sudo tee /etc/caddy/Caddyfile >/dev/null <<'EOF'
https://localhost:11435 {
  tls internal
  reverse_proxy 127.0.0.1:11434
}
EOF

sudo systemctl reload caddy # Needed to pick the previous changes

# We need the system to trust Caddy's certificate by doing the following:
sudo cp /var/lib/caddy/.local/share/caddy/pki/authorities/local/root.crt /usr/local/share/ca-certificates/caddy-local-root.crt

# We need also SQL Server system to trust Caddy's certificate:
sudo mkdir -p /var/opt/mssql/security/ca-certificates
sudo cp /var/lib/caddy/.local/share/caddy/pki/authorities/local/root.crt /var/opt/mssql/security/ca-certificates/caddy-local-root.crt
sudo chown -R mssql:mssql /var/opt/mssql/security
sudo chmod 744 /var/opt/mssql/security/ca-certificates
sudo chmod 644 /var/opt/mssql/security/ca-certificates/caddy-local-root.crt

# Update the VM's trusted certificates
sudo update-ca-certificates

# Restart SQL Server 
sudo systemctl restart mssql-server

# Check a few https endpoints 
curl -w '\n' https://localhost:11435/api/tags 
curl -w '\n' https://localhost:11435/api/embed \
  -H "Content-Type: application/json" \
  -d '{ "model":"nomic-embed-text", "input":"hello from caddy" }'

Dependencias de Python

Ahora procedamos con la instalación de los requisitos previos para conectarse a la instancia de SQL Server utilizando el programa Python.

sudo apt install -y python3-openai python3-pyodbc

Llamar a modelos de IA desde SQL Server 2025

Ahora habilitaremos SQL Server para que use el punto final externo y luego lo reiniciaremos para asegurarnos de que seleccione correctamente el nuevo certificado confiable.

/opt/mssql-tools18/bin/sqlcmd -S 127.0.0.1 -U sa -C -P "$SQLCMDPASSWORD" -Q "EXEC sp_configure 'external rest endpoint enabled', 1; RECONFIGURE;"
sudo systemctl restart mssql-server

Luego escribiremos un script Python simple para probar lo siguiente:

  • Conectarse al servidor mediante programación
  • Registre el modelo Ollama a través del proxy HTTPS
  • Crea una columna vectorial y dale algunos ejemplos usando un modelo registrado.
  • Cree un índice optimizado para vectores y utilícelo para realizar búsquedas de similitud
cat < ~/mssqlvector.py
import pyodbc

# Define parameters based on your sqlcmd
server="127.0.0.1"
database="DemoDb"
username="sa"
password = "$MSSQL_SA_PASSWORD"
port="1433"

# Connection string using SQL Server Authentication
connection_string = (
    "DRIVER={ODBC Driver 18 for SQL Server};"
    f"SERVER={server},{port};"
    f"DATABASE={database};"
    f"UID={username};"
    f"PWD={{{password}}};"
    f"Encrypt=no;"
    f"Connection Timeout=7;"
    f"TrustServerCertificate=yes;"
)

try:
    conn = pyodbc.connect(connection_string)
    cur = conn.cursor()
    print("Connected to SQL Server!")

    # Example: simple query
    cur.execute("SELECT name FROM sys.databases;")
    for row in cur.fetchall():
        print(row)

    conn.autocommit = True

    # 1) Register Ollama model via HTTPS proxy
    cur.execute("""
IF NOT EXISTS (SELECT * FROM sys.external_models WHERE name="ollama")
CREATE EXTERNAL MODEL ollama
WITH (
        LOCATION   = '
        API_FORMAT = 'Ollama',
        MODEL_TYPE = EMBEDDINGS,
        MODEL      = 'nomic-embed-text'   -- 768 dims
);
""")

    # 2) Create a new table including a vector column
    cur.execute("""
DROP TABLE IF EXISTS dbo.SupportMatrix;
CREATE TABLE dbo.SupportMatrix (
        id        INT IDENTITY PRIMARY KEY,
        sentence  NVARCHAR(400) NOT NULL,
        embedding VECTOR(768)   NULL
);
""")

    # 3) Insert your Ubuntu/SQL Server lines
    texts = [
        "Ubuntu 24.04 is supported by SQL Server 2025",
        "Ubuntu 22.04 is supported by SQL Server 2022",
        "Ubuntu 20.04 is supported by SQL Server 2019",
        "Ubuntu 18.04 is supported by SQL Server 2019"
    ]
    cur.executemany("INSERT INTO dbo.SupportMatrix(sentence) VALUES (?);", [(t,) for t in texts])

    # 4) Generate embeddings in-database (using the external model)
    cur.execute("""
UPDATE dbo.SupportMatrix
SET embedding = AI_GENERATE_EMBEDDINGS(sentence USE MODEL ollama)
WHERE embedding IS NULL;
""")

    # 5) Create an ANN similarity index (DiskANN) on the vector column
    cur.execute("""
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name="IX_SupportMatrix_Embedding")
CREATE VECTOR INDEX IX_SupportMatrix_Embedding
ON dbo.SupportMatrix(embedding)
WITH (METRIC = 'cosine', TYPE = 'diskann');
""")

    # 6) Run a similarity search with VECTOR_SEARCH (uses the ANN index)
    query_text = "What Ubuntu version is supported by SQL Server 2025?"
    cur.execute("""
DECLARE @q VECTOR(768) = AI_GENERATE_EMBEDDINGS(?, ollama);

SELECT TOP (3)
  t.id,
  t.sentence,
  s.distance
FROM VECTOR_SEARCH(
    table = dbo.SupportMatrix AS t,
    column = embedding,
    similar_to = @q,
    metric="cosine",
    top_n = 3
) AS s
ORDER BY s.distance, t.id;
""", (query_text,))

    print(f"Top matches for: '{query_text}'\n")
    for row in cur.fetchall():
        print(row)

except Exception as e:
    print("Connection failed:", e)

finally:
    conn.close()

EOT

Entonces podemos usar Python scipt de la siguiente manera:

python3 ~/mssqlvector.py

Revisamos algunas características nuevas relacionadas con la IA que puede usar fácilmente en su base de datos de SQL Server. Acercar la IA a sus datos es una excelente manera de obtener más valor de sus datos sin enfrentar los desafíos inherentes a la duplicación de datos.

Otro desafío que las empresas deben abordar es garantizar la seguridad de sus cadenas de suministro de IA. Veamos cómo manejarlo a continuación.

Para obtener actualizaciones de seguridad para hasta 25.000 paquetes de código abierto, puede suscribirse a Ubuntu Pro (gratis para uso personal, hasta 5 máquinas). Puede verificar si está suscrito ejecutando el siguiente comando:

pro api u.pro.status.enabled_services.v1 | grep -c esm

Si no está habilitado, puedes suscribirte a Ubuntu Pro aquí. Una vez que tengas el token, simplemente ingresa:

sudo pro attach 

Ahora que ha cubierto todos los paquetes mantenidos por Canonical, debe verificar los proveedores de otros paquetes que no están incluidos en Ubuntu Pro. El siguiente comando le ayudará a identificar todos los paquetes deb que Canonical no mantiene directamente:

dpkg-query -W -f="${Package}\n" | while read pkg; do
    src=$(apt-cache policy "$pkg" | grep -m 1 http | awk '{print $2}')
    if [[ -n "$src" && "$src" != *ubuntu.com* ]]; then
        echo "$pkg -> $src"
    fi
done

En mi máquina virtual de prueba, lo anterior generó los siguientes paquetes proporcionados por Microsoft:

msodbcsql18 -> 
mssql-server -> 
mssql-tools18 -> 
packages-microsoft-prod -> 

Sólo debes conservar fuentes confiables, como Microsoft y Canonical. También debe realizar las mismas comprobaciones para todos los demás tipos de paquetes o imágenes que pueda utilizar (contenedores, instantáneas...). Desafortunadamente, es posible que muchas empresas estén descuidando la seguridad del modelo en sí. Canonical no solo proporciona modelos de IA auditados, sino también modelos optimizados para su infraestructura. Veamos un ejemplo.

recientemente estandarizado Anunciar Las instantáneas de inferencia aprovechan la potencia de su silicio, ya sea CPU o GPU, para acelerar sus cargas de trabajo de IA. El método de instalación es el siguiente:

sudo snap install qwen-vl --beta
qwen-vl status # Checks it finished successfully

En mi máquina obtengo:

engine: cpu-avx512
endpoints:
    openai: 

Luego puede utilizar el modelo recién implementado de la siguiente manera:

curl /chat/completions \
-H "Content-Type: application/json" \
-d '{ "model": "", "messages": [{"role": "user", "content": "Who is the publisher of Ubuntu?"}],
"temperature": 0.7
}' | jq

Luego debería recibir una respuesta al mensaje proporcionado.

La ejecución de modelos de IA optimizados junto con Ubuntu Pro y SQL Server le brinda una pila segura y confiable para respaldar sus flujos de trabajo de IA. Canonical y Microsoft pueden ayudarle a llegar más lejos con productos compatibles conjuntamente.

Juntos analizamos cómo Canonical y Microsoft pueden ayudarlo a ejecutar una pila de IA integrada desde el sistema operativo hasta el motor de base de datos y los modelos de IA. Con el apoyo de ambas empresas, Canonical y Microsoft proporcionan imágenes de VM de Azure prediseñadas con SQL Server preconfigurado además de Ubuntu Pro. También podemos ayudarlo a ejecutar una implementación de SQL Server altamente disponible y compatible en Ubuntu Pro. por favor Contáctenos Obtenga más información.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba