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:
- Notas de la versión de SQL Server 2022 en Linux
- Notas de la versión de SQL Server 2019 en Linux
- 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 quelocalhost
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.
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"
Sugerencia
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 SQL Server en Linux. Para administrar servicios en Linux, consulte Iniciar, detener y reiniciar servicios SQL Server en Linux.
Administración de la ejecución del contenedor de SQL Server en Linux
Puede obtener el estado y el identificador del contenedor de SQL Server en Linux 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 contenedores de Linux, vea Solución de problemas de contenedores de SQL Server en Linux.
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) impide 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 (DMK)
- 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.
Motor de base de datos de SQL Server
sudo systemctl stop mssql-server
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.Después de ver el mensaje "Se completó la recuperación", presione Ctrl+C. Esto cierra SQL Server.
Vuelva a configurar la contraseña de administrador del sistema.
sudo /opt/mssql/bin/mssql-conf set-sa-password
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.
- Supervisión del rendimiento mediante el Almacén de consultas
- Vistas de administración dinámica del sistema
- Panel de rendimiento en SQL Server Management Studio
Problemas comunes
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.
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.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
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\$\$
Contenido relacionado
Obtener ayuda
- Ideas para SQL: ¿Tiene sugerencias para mejorar SQL Server?
- Preguntas y respuestas de Microsoft (SQL Server)
- Stack Exchange de DBA (etiqueta sql-server): Preguntas sobre SQL Server
- Stack Overflow (etiqueta sql-server): Respuestas a preguntas de desarrollo de SQL
- Reddit: Debate general sobre SQL Server
- Información y términos de licencia de Microsoft SQL Server
- Opciones de soporte técnico para usuarios profesionales
- Comentarios y ayuda adicional sobre SQL Server
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.