Solución de problemas de SQL Server en Linux

Se aplica a:SQL Server: Linux

En este artículo se describe cómo solucionar problemas de SQL Server en Linux o en un contenedor de Linux. A la hora de solucionar problemas de SQL Server en Linux, no olvide revisar las características admitidas y las limitaciones conocidas en las Notas de la versión de SQL Server 2017 en Linux.

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

Solución de problemas de errores de conexión

Si tiene dificultades para conectarse a la instancia de SQL Server de Linux, hay que comprobar varias cosas.

  • Si no puede conectarse localmente mediante localhost, pruebe a usar la dirección IP 127.0.0.1. Es posible que localhost no se haya asignado correctamente a esta dirección.

  • Compruebe que es posible acceder al nombre del servidor o a la dirección IP desde el equipo cliente.

    Sugerencia

    Para buscar la dirección IP de la máquina Ubuntu, puede ejecutar el comando ifconfig como en el ejemplo siguiente:

    sudo ifconfig eth0 | grep 'inet addr'
    

    Para Red Hat, puede usar el comando ip addr como en el ejemplo siguiente:

    sudo ip addr show eth0 | grep "inet"
    

    Las máquinas virtuales de Azure son una excepción a esta técnica. En este caso, busque la dirección IP pública de la máquina virtual en Azure Portal.

  • Si procede, compruebe que ha abierto el puerto de SQL Server (valor predeterminado 1433) en el firewall.

  • En el caso de las máquinas virtuales de Azure, compruebe que tiene una regla de grupo de seguridad de red para el puerto predeterminado de SQL Server.

  • Compruebe que el nombre de usuario y la contraseña no contengan errores tipográficos ni espacios adicionales y que el uso de mayúsculas sea correcto.

  • Intente establecer explícitamente el protocolo y el número de puerto con el nombre del servidor, como en el ejemplo siguiente: tcp:servername,1433.

  • Los problemas de conectividad de red también pueden producir tiempos de espera y errores de conexión. Después de comprobar la información de conexión y la conectividad de red, intente realizar la conexión de nuevo.

Administración del servicio SQL Server

En la sección siguiente se muestra cómo administrar la ejecución de contenedores de Docker de SQL Server. Para administrar servicios en Linux, consulte Iniciar, detener y reiniciar servicios SQL Server en Linux.

Administración de la ejecución del contenedor de Docker de SQL

Puede obtener el estado y el identificador del contenedor de Docker de SQL Server creado más recientemente mediante el comando siguiente (el ID está en la columna CONTAINER ID):

sudo docker ps -l

Puede detener o reiniciar el servicio SQL Server según sea necesario mediante los comandos siguientes:

sudo docker stop <container ID>
sudo docker restart <container ID>

Sugerencia

Para obtener más sugerencias para la solución de problemas de Docker, vea Solución de problemas de contenedores de Docker de SQL Server.

Acceso a los archivos de registro

El motor de base de datos de SQL Server crea registros en el archivo /var/opt/mssql/log/errorlog tanto en las instalaciones de Linux como en las del contenedor. Debe estar en modo de superusuario para poder examinar este directorio.

El instalador crea registros aquí: /var/opt/mssql/setup-<time stamp representing time of install>. Puede examinar los archivos de errorlog con cualquier herramienta compatible con UTF-16, como, por ejemplo, vim o cat:

sudo cat errorlog

Si lo prefiere, también puede usar el comando siguiente para convertir los archivos a UTF-8 y leerlos con more o less:

sudo iconv -f UTF-16LE -t UTF-8 <errorlog> -o <output errorlog file>

Eventos extendidos

Los eventos extendidos se pueden consultar con un comando SQL. Para obtener más información, consulte los eventos extendidos.

Volcados de memoria

Busque volcados en el directorio de registro de Linux. Compruebe en el directorio /var/opt/mssql/log si hay volcados de Linux Core (extensión .tar.gz2) o minivolcados de SQL (extensión .mdmp).

Por ejemplo, para ver los volcados básicos:

sudo ls /var/opt/mssql/log | grep .tar.gz2

Para los volcados de SQL, use este script:

sudo ls /var/opt/mssql/log | grep .mdmp

Inicio de SQL Server con la configuración mínima o en modo de usuario único

Inicio de SQL Server con la configuración mínima

Este modo resulta útil si el valor de una opción de configuración (por ejemplo, la confirmación excesiva de memoria) ha impedido el inicio del servidor.

sudo -u mssql /opt/mssql/bin/sqlservr -f

Inicio de SQL Server en modo de usuario único

En ocasiones, podría ser necesario iniciar una instancia de SQL Server en modo de usuario único mediante la opción de inicio -m. Para obtener más información, vea parámetros de inicio. Por ejemplo, podría querer cambiar las opciones de configuración del servidor o recuperar una base de datos master dañada u otra base de datos del sistema.

Por ejemplo, use el script siguiente para iniciar SQL Server en modo de usuario único:

sudo -u mssql /opt/mssql/bin/sqlservr -m

Este script inicia SQL Server en modo de usuario único con sqlcmd:

sudo -u mssql /opt/mssql/bin/sqlservr -m sqlcmd

Siempre debe empezar SQL Server en Linux con el usuario mssql para evitar problemas de inicio futuros. Por ejemplo: sudo -u mssql /opt/mssql/bin/sqlservr [STARTUP OPTIONS]

Si ha iniciado accidentalmente SQL Server con otro usuario, debe cambiar la propiedad de los archivos de base de datos de SQL Server al usuario mssql antes de iniciar SQL Server con systemd. Por ejemplo, para cambiar la propiedad de todos los archivos de base de datos en /var/opt/mssql al usuario mssql, ejecute el comando siguiente:

chown -R mssql:mssql /var/opt/mssql/

Regeneración de las bases de datos del sistema

Como último recurso, puede volver a generar las bases de datos master y model a las versiones predeterminadas.

Advertencia

Este proceso es peligroso, ya que puede eliminar todos los datos del sistema de SQL Server que haya configurado, incluida la información sobre sus bases de datos de usuario (pero no las bases de datos de usuario en sí).

Después, deberá asociar las bases de datos de usuario a la instancia. También se eliminará otra información almacenada en las bases de datos del sistema, incluida la siguiente:

  • Información de la clave maestra de base de datos
  • Cualquier certificado cargado en master
  • contraseña de inicio de sesión de Microsoft Software Assurance
  • Información relacionada con el trabajo de msdb
  • Información de Correo electrónico de base de datos de msdb
  • Opciones de sp_configure

No podrá volver a asociar las bases de datos de usuario cifradas con cifrado de datos transparente (TDE), a menos que también se haga una copia de seguridad de los certificados y las claves privadas.

Estos pasos solo deben seguirse si se entienden las implicaciones.

  1. Motor de base de datos de SQL Server

    sudo systemctl stop mssql-server
    
  2. Ejecute sqlservr con el parámetro force-setup

    sudo -u mssql /opt/mssql/bin/sqlservr --force-setup
    

    Siempre debe empezar SQL Server en Linux con el usuario mssql para evitar problemas de inicio futuros.

  3. Después de ver el mensaje "Se completó la recuperación", presione Ctrl+C. Esto cierra SQL Server.

  4. Vuelva a configurar la contraseña de administrador del sistema.

    sudo /opt/mssql/bin/mssql-conf set-sa-password
    
  5. Inicie SQL Server y vuelva a configurar el servidor, incluidas las restauración o la reasociación de cualquier base de datos de usuario.

    sudo systemctl start mssql-server
    

Mejorar el rendimiento

Muchos factores afectan al rendimiento, como el diseño de la base de datos, el hardware y las demandas de cargas de trabajo. Si quiere mejorar el rendimiento, empiece por revisar los procedimientos recomendados que aparecen en el artículo Procedimientos recomendados de rendimiento e instrucciones de configuración para SQL Server en Linux. A continuación, explore algunas de las herramientas disponibles para solucionar problemas de rendimiento.

Problemas comunes

  1. No es posible conectarse a la instancia remota de SQL Server.

    Consulte la sección de solución de problemas del artículo Conectarse a SQL Server en Linux.

  2. Aparece el mensaje de error: ERROR: Hostname must be 15 characters or less.

    Se trata de un problema conocido que se produce siempre que el nombre de la máquina que intenta instalar el paquete de SQL Server tiene más de 15 caracteres. Actualmente no hay ninguna solución alternativa que no sea cambiar el nombre de la máquina. Puede hacerlo editando ambos /etc/hostname y /etc/hosts, cambiando el nombre de host, guardando cada archivo y reiniciando el equipo.

  3. Debe restablecerse la contraseña de administración del sistema (SA), lo que detiene temporalmente el servicio de SQL Server.

    Si ha olvidado la contraseña de administrador del sistema (SA) o necesita restablecerla por algún otro motivo, siga estos pasos.

    Inicie sesión en el terminal del host, ejecute los siguientes comandos y siga las indicaciones para restablecer la contraseña de administrador del sistema:

    sudo systemctl stop mssql-server
    sudo /opt/mssql/bin/mssql-conf setup
    
  4. Los caracteres especiales de las contraseñas de inicio de sesión provocan fallos o errores de inicio de sesión.

    Si usa ciertos caracteres en la contraseña de inicio de sesión de SQL Server, es posible que tenga que usar un carácter de escape (una barra diagonal inversa) al utilizarlos en la línea de comandos de Linux. Por ejemplo, debe usar un carácter de escape en el signo de dólar ($) siempre que lo use en un script de comando/shell del terminal:

    No funciona:

    sudo sqlcmd -S myserver -U sa -P Test$$
    

    Funciona:

    sqlcmd -S myserver -U sa -P Test\$\$
    

Obtener ayuda

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 más información, vea Cómo colaborar en la documentación de SQL Server.