Compartir a través de


Inicio rápido: Instalación de SQL Server y creación de una base de datos en el Subsistema de Windows para Linux (WSL 2)

Se aplica a:SQL Server - Linux

Subsistema de Windows para Linux (WSL) es una característica de Windows que permite ejecutar un entorno linux directamente en la máquina Windows, sin necesidad de una máquina virtual o arranque dual. WSL proporciona una experiencia perfecta y productiva para los desarrolladores que desean usar Windows y Linux simultáneamente. Para obtener más información, consulte ¿Qué es el Subsistema de Windows para Linux?

SQL Server en WSL es solo para uso de desarrollo

SQL Server en WSL 2 está pensado solo para fines de desarrollo y no se admite para cargas de trabajo de producción. Se recomienda ejecutar SQL Server en entornos WSL en una de las plataformas admitidas como se documenta, para la versión de SQL Server que quiere ejecutar.

Para cualquier problema relacionado con el soporte técnico, puede obtener soporte técnico de Microsoft.

Introducción a SQL Server en WSL 2

Hay dos maneras de empezar a trabajar con SQL Server en WSL 2:

  • Instale SQL Server como systemd servicio, que se puede administrar mediante systemctl comandos. Asegúrese de habilitar systemd en WSL. Para obtener más información, vea Cómo habilitar systemd.

  • Implemente contenedores de SQL Server en WSL. Para esta opción, debe instalar un motor de contenedor de Linux en WSL, como Docker o Podman, y, a continuación, implementar contenedores de SQL Server.

Prerrequisitos

Instale WSL 2. Asegúrese de que ejecuta Windows 10 versión 2004 o posterior (compilación 19041 y posterior) o Windows 11. Para instalar WSL, abra un símbolo del sistema de PowerShell o Windows en modo de administrador y ejecute el siguiente comando:

wsl --install

Para obtener instrucciones detalladas, consulte Instalación de Linux en Windows con WSL. Para obtener información sobre cómo configurar el entorno de WSL para el desarrollo, consulte Configuración de un entorno de desarrollo de WSL.

Instalación de SQL Server en WSL

En esta sección se describen los pasos para configurar una distribución de Linux en WSL y cómo instalar SQL Server en esa distribución de Linux.

Elección de la distribución de Linux

Puede enumerar todas las distribuciones válidas que se pueden instalar en WSL mediante el siguiente comando:

wsl -l -o

La salida es similar a la del siguiente ejemplo.

The following is a list of valid distributions that can be installed.
Install using 'wsl.exe --install <Distro>'.

NAME                            FRIENDLY NAME
Ubuntu                          Ubuntu
Debian                          Debian GNU/Linux
kali-linux                      Kali Linux Rolling
Ubuntu-18.04                    Ubuntu 18.04 LTS
Ubuntu-20.04                    Ubuntu 20.04 LTS
Ubuntu-22.04                    Ubuntu 22.04 LTS
Ubuntu-24.04                    Ubuntu 24.04 LTS
OracleLinux_7_9                 Oracle Linux 7.9
OracleLinux_8_7                 Oracle Linux 8.7
OracleLinux_9_1                 Oracle Linux 9.1
openSUSE-Leap-15.6              openSUSE Leap 15.6
SUSE-Linux-Enterprise-15-SP5    SUSE Linux Enterprise 15 SP5
SUSE-Linux-Enterprise-15-SP6    SUSE Linux Enterprise 15 SP6
openSUSE-Tumbleweed             openSUSE Tumbleweed

Para este inicio rápido, instale Ubuntu 22.04 y, después, instale SQL Server 2022 en esa distribución.

Para instalar Ubuntu 22.04, ejecute el siguiente comando. Anote la cuenta de usuario y la contraseña de UNIX. En este ejemplo, use wsluser como nombre de usuario.

wsl --install -d Ubuntu-22.04

Debería ver una salida similar al ejemplo siguiente: Al final, debería mostrar que ha iniciado sesión en el shell de Bash de Ubuntu 22.04.

Installing: Ubuntu 22.04 LTS
Ubuntu 22.04 LTS has been installed.
Launching Ubuntu 22.04 LTS...
Installing, this may take a few minutes...
Please create a default UNIX user account. The username does not need to match your Windows username.
For more information visit: https://aka.ms/wslusers
Enter new UNIX username: wsluser
New password:
Retype new password:
passwd: password updated successfully
Installation successful!
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

Welcome to Ubuntu 22.04.5 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/pro

 System information as of Tue Dec  3 00:32:14 IST 2024

  System load:  0.33                Processes:             32
  Usage of /:   0.1% of 1006.85GB   Users logged in:       0
  Memory usage: 2%                  IPv4 address for eth0: 10.18.123.249
  Swap usage:   0%

This message is shown once a day. To disable it please create the
/home/wsluser/.hushlogin file.

Instalación de SQL Server

Una vez que haya iniciado sesión en el shell de Bash de Ubuntu 22.04, puede seguir los pasos descritos en Inicio rápido: Instalación de SQL Server y creación de una base de datos en Ubuntu para instalar SQL Server 2022.

También debe instalar las herramientas de línea de comandos de SQL Server .

Obtención de la dirección IP

Para identificar la dirección IP a la que conectarse mediante SQL Server Management Studio (SSMS), ejecute el comando de la ifconfig siguiente manera:

ifconfig

Debería ver una salida similar al ejemplo siguiente:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.19.50.241  netmask 255.255.240.0  broadcast 10.19.63.255
        inet6 fe80::215:5dff:fe76:c05d  prefixlen 64  scopeid 0x20<link>
        ether 00:15:5d:76:c0:5d  txqueuelen 1000  (Ethernet)
        RX packets 2146  bytes 1452448 (1.4 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 1905  bytes 345288 (345.2 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 2039  bytes 4144340 (4.1 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2039  bytes 4144340 (4.1 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Implementación de contenedores de SQL Server en WSL

Para implementar contenedores en WSL, primero debe instalar un motor de contenedor linux, como Docker. Para obtener más información, consulte Introducción a los contenedores remotos de Docker en WSL. Una vez instalado el motor de Docker, implemente la imagen de contenedor de SQL Server como se indica a continuación.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-e "MSSQL_PID=Developer" -e "MSSQL_AGENT_ENABLED=true" \
-p 14333:1433 --name sqlcontainerwsl --hostname sqlcontainerwsl \
-d mcr.microsoft.com/mssql/server:2022-latest

Nota:

La contraseña debe seguir la directiva de contraseña predeterminada de SQL Server. De forma predeterminada, la contraseña debe tener al menos ocho caracteres y contener caracteres de tres de los siguientes cuatro conjuntos: mayúsculas, minúsculas, dígitos en base 10 y símbolos. Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.

Adición de almacenamiento persistente con WSL para contenedores de SQL Server

Puede crear volúmenes de datos como se describe en Montaje de un directorio host como volumen de datos.

Por ejemplo, ejecute el siguiente comando para configurar un volumen denominado sql_volume ubicado en /var/opt/mssql/.

docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" \
-e "MSSQL_PID=Developer" -e "MSSQL_AGENT_ENABLED=true" \
-p 14333:1433 --name sqlcontainerwsl --hostname sqlcontainerwsl \
-v sql_volume:/var/opt/mssql/ \
-d mcr.microsoft.com/mssql/server:2022-latest

Incluso si ejecuta el wsl --terminate comando, los datos no se pierden. Al iniciar WSL de nuevo y ejecutar el comando docker run para implementar con el volumen sql_volume, todos los datos siguen intactos.

Si desea eliminar el volumen persistente, asegúrese de que el contenedor que utiliza el volumen esté detenido y eliminado, y luego ejecute el siguiente comando.

docker volume rm sql_volume

Observaciones

Debe poder configurar la mayoría de las características admitidas para SQL Server en Linux con fines de desarrollo, excepto las características de continuidad de negocio que dependen de los clústeres. Estas características, como Pacemaker o HPE Serviceguard, no se admiten en WSL.

Para obtener una lista completa de las características no admitidas para SQL Server en Linux, consulte Ediciones y características admitidas de SQL Server 2022 en Linux.

Conexión local

En los pasos siguientes se usa sqlcmd para conectarse localmente a la nueva instancia de SQL Server.

Precaución

La contraseña debe seguir la directiva de contraseña predeterminada de SQL Server. De forma predeterminada, la contraseña debe tener al menos ocho caracteres y contener caracteres de tres de los siguientes cuatro conjuntos: mayúsculas, minúsculas, dígitos en base 10 y símbolos. Las contraseñas pueden tener hasta 128 caracteres. Use contraseñas lo más largas y complejas posible.

  1. Ejecute sqlcmd con parámetros para el nombre de SQL Server (-S), el nombre de usuario (-U) y la contraseña (-P). En este tutorial se conecta de forma local, por lo que el nombre del servidor es localhost. El nombre de usuario es sa y la contraseña es la que proporcionó para la cuenta de sa durante la configuración.

    sqlcmd -S localhost -U sa -P '<password>'
    

    Nota:

    Las versiones más recientes de sqlcmd están protegidas de manera predeterminada. Para obtener más información sobre el cifrado de conexión, consulte Utilidad de sqlcmd para Windows y Conexión con sqlcmd para Linux y macOS. Si la conexión no se realiza correctamente, puede agregar la opción -No a sqlcmd para especificar que el cifrado es opcional, no obligatorio.

    Puede omitir la contraseña en la línea de comandos para que se le solicite escribirla.

    Si más adelante decide conectarse de forma remota, especifique el nombre de la máquina o la dirección IP del parámetro -S y asegúrese de que el puerto 1433 esté abierto en el firewall.

  2. Si se realiza correctamente, debe ver un símbolo de sistema de sqlcmd: 1>.

  3. Si recibe un error de conexión, intente primero diagnosticar el problema a partir del mensaje de error. Luego revise las recomendaciones para solucionar problemas de conexión.

Creación y consulta de datos

Las secciones siguientes le guían en el uso de sqlcmd para crear una base de datos, agregar datos y ejecutar una consulta simple.

Para obtener más información sobre cómo escribir consultas e instrucciones Transact-SQL, vea Tutorial: Escribir instrucciones Transact-SQL.

Creación de una base de datos

En los pasos siguientes se crea una base de datos denominada TestDB.

  1. En el símbolo del sistema de sqlcmd, pegue el comando Transact-SQL siguiente para crear una base de datos de prueba:

    CREATE DATABASE TestDB;
    
  2. En la línea siguiente, escriba una consulta para devolver el nombre de todas las bases de datos del servidor:

    SELECT Name
    FROM sys.databases;
    
  3. Los dos comandos anteriores no se ejecutan de inmediato. Debe escribir GO en una línea nueva para ejecutar los comandos anteriores:

    GO
    

Insertar datos

Luego cree una tabla, dbo.Inventory, e inserte dos filas nuevas.

  1. En el símbolo del sistema de sqlcmd, cambie el contexto a la nueva base de datos TestDB:

    USE TestDB;
    
  2. Cree una tabla llamada dbo.Inventory:

    CREATE TABLE dbo.Inventory
    (
        id INT,
        name NVARCHAR (50),
        quantity INT,
        PRIMARY KEY (id)
    );
    
  3. Inserte datos en la nueva tabla:

    INSERT INTO dbo.Inventory
    VALUES (1, 'banana', 150);
    
    INSERT INTO dbo.Inventory
    VALUES (2, 'orange', 154);
    
  4. Escriba GO para ejecutar los comandos anteriores:

    GO
    

Selección de datos

Ahora ejecute una consulta para devolver datos desde la tabla dbo.Inventory.

  1. En el símbolo del sistema sqlcmd, escriba una consulta que devuelva filas desde la tabla dbo.Inventory donde la cantidad sea mayor que 152:

    SELECT *
    FROM dbo.Inventory
    WHERE quantity > 152;
    
  2. Ejecute el comando:

    GO
    

Salida del símbolo del sistema de sqlcmd

Para finalizar la sesión de sqlcmd, escriba QUIT:

QUIT

Mejores prácticas de rendimiento

Después de instalar SQL Server en Linux, revise los procedimientos recomendados para configurar Linux y SQL Server con el fin de mejorar el rendimiento de los escenarios de producción. Para obtener más información, consulte Procedimientos recomendados e instrucciones de configuración de SQL Server en Linux.

Herramientas de datos multiplataforma

Además de sqlcmd, puede usar las siguientes herramientas multiplataforma para administrar SQL Server:

Herramienta Descripción
Azure Data Studio Una utilidad de administración de bases de datos GUI multiplataforma.
Visual Studio Code Un editor de código GUI multiplataforma que ejecuta instrucciones Transact-SQL con la extensión mssql.
PowerShell Core Una herramienta de configuración y automatización multiplataforma basada en cmdlets.
mssql-cli Una interfaz de línea de comandos multiplataforma para ejecutar comandos Transact-SQL.

Conexión desde Windows

Las herramientas de SQL Server en Windows se conectan a instancias de SQL Server en Linux del mismo modo en que se conectarían a cualquier instancia remota de SQL Server.

Si tiene una máquina Windows que se puede conectar a la máquina Linux, pruebe con los mismos pasos de este tema desde un símbolo del sistema Windows mediante la ejecución de sqlcmd. Debe usar el nombre o la dirección IP de la máquina Linux de destino en lugar de localhost y asegurarse de que el puerto TCP 1433 esté abierto en la máquina con SQL Server. Si tiene problemas para conectarse desde Windows, consulte las recomendaciones para solucionar problemas de conexión.

Para las otras herramientas que se ejecutan en Windows pero se conectan a SQL Server en Linux, consulte:

Otros escenarios de implementación

Para otros escenarios de instalación, vea los siguientes recursos:

  • Actualización: Obtenga información sobre cómo actualizar una instalación existente de SQL Server en Linux
  • Uninstall. Desinstalación de SQL Server en Linux
  • Instalación desatendida: Obtenga información sobre cómo crear un script para la instalación sin pedir confirmación
  • Instalación sin conexión: Obtenga información sobre cómo descargar manualmente los paquetes de instalación sin conexión

Para obtener respuesta a las preguntas más frecuentes, vea Preguntas más frecuentes sobre SQL Server en Linux.

Contribuya a la documentación de SQL

¿Sabía que puede editar el contenido de SQL usted mismo? Si lo hace, no solo contribuirá a mejorar la documentación, sino que también se le reconocerá como colaborador de la página.

Para obtener más información, consulte Editar documentación de Microsoft Learn.