SQL Server en Linux: problemas conocidos

En las secciones siguientes, se describen problemas conocidos con SQL Server en Linux.

General

En la tabla siguiente se describen los problemas más habituales con SQL Server en Linux.

Problema Resolución
La longitud del nombre de host donde se instale SQL Server ha de tener 15 caracteres o menos. Cambie el nombre en /etc/hostname a un valor de 15 caracteres de longitud o menor.
Al retrasar de forma manual la hora del sistema, SQL Server deja de actualizar la hora interna del sistema en el Motor de base de datos. Reinicie SQL Server.
Solo se admiten las instalaciones de instancia única. Si desea tener más de una instancia en un host específico, plantéese usar máquinas virtuales o contenedores de Linux.
SQL Server Configuration Manager no puede conectarse a SQL Server en Linux. Ninguno.
El idioma predeterminado del inicio de sesión de sa es el inglés. Cambie el idioma del inicio de sesión de sa con la instrucción ALTER LOGIN.
El proveedor OLE DB registra la advertencia siguiente:

Failed to verify the Authenticode signature of 'C:\binn\msoledbsql.dll'. Signature verification of SQL Server DLLs will be skipped. Genuine copies of SQL Server are signed. Failure to verify the Authenticode signature might indicate that this isn't an authentic release of SQL Server. Install a genuine copy of SQL Server or contact customer support.
No hace falta realizar ninguna acción. El proveedor OLE DB se firma con SHA256. El motor de base de datos de SQL Server no valida correctamente el archivo .dll firmado.
El comando Reset password mediante mssql-conf produce el siguiente error:

Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information.
El mensaje de error es un falso negativo. El restablecimiento de contraseña se realizó correctamente y puede seguir usando la nueva contraseña.

Se aplica a: imágenes de contenedor de SQL Server 2022 (16.x) exclusivamente.

Bases de datos

  • La base de datos master no se puede mover con la utilidad mssql-conf. Otras bases de datos del sistema se pueden mover con mssql-conf.

  • Al restaurar una base de datos cuya copia de seguridad se ha realizado en SQL Server en Windows, tendrá que usar la cláusula WITH MOVE en la instrucción Transact-SQL. Para obtener más información, consulte Migración de una base de datos SQL Server de Windows a Linux mediante Copia de seguridad y restauración.

  • Algunos algoritmos (conjuntos de cifrado) para TLS (Seguridad de la capa de transporte) no funcionan correctamente con SQL Server en Linux. Esto causa errores de conexión al intentar conectarse a SQL Server, así como problemas al establecer conexiones entre réplicas en grupos de alta disponibilidad.

    Para resolver este problema, modifique el script de configuración mssql.conf para SQL Server en Linux para deshabilitar los conjuntos de cifrado problemáticos; para hacerlo, siga estos pasos:

    1. Agregue la siguiente sección a /var/opt/mssql/mssql.conf. El símbolo de exclamación (!) niega la expresión. Esto indica a OpenSSL que no use el siguiente conjunto de aplicaciones de cifrado.

      [network]
      tlsciphers=AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:!ECDHE-RSA-AES128-GCM-SHA256:!ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES256-GCM-SHA384:!ECDHE-ECDSA-AES128-GCM-SHA256:!ECDHE-ECDSA-AES256-SHA384:!ECDHE-ECDSA-AES128-SHA256:!ECDHE-ECDSA-AES256-SHA:!ECDHE-ECDSA-AES128-SHA:!ECDHE-RSA-AES256-SHA384:!ECDHE-RSA-AES128-SHA256:!ECDHE-RSA-AES256-SHA:!ECDHE-RSA-AES128-SHA:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA:!DHE-DSS-AES256-SHA256:!DHE-DSS-AES128-SHA256:!DHE-DSS-AES256-SHA:!DHE-DSS-AES128-SHA:!DHE-DSS-DES-CBC3-SHA:!NULL-SHA256:!NULL-SHA
      
    2. Reinicie SQL Server con el comando siguiente.

      sudo systemctl restart mssql-server
      
  • Las bases de datos de SQL Server 2014 (12.x) en Windows que usan OLTP en memoria no se pueden restaurar en SQL Server en Linux. Si la base de datos de SQL Server 2014 (12.x) usa OLTP en memoria, actualice primero las bases de datos a una versión más reciente de SQL Server en Windows. A continuación, se puede mover a SQL Server en Linux, con copia de seguridad o restauración, o separación y asociación.

  • El permiso de usuario ADMINISTER BULK OPERATIONS no se admite en Linux en este momento.

  • Las copias de seguridad comprimidas por TDE realizadas con SQL Server 2019 (15.x) CU 16 y versiones posteriores no se pueden restaurar a versiones anteriores de CU de SQL Server 2019 (15.x). Para obtener más información, vea FIX: Se produce el error 3241 durante la ejecución de RESTORE LOG o RESTORE DATABASE.

    Las copias de seguridad comprimidas con el Cifrado de datos transparente (TDE) que se realizan mediante versiones CU anteriores de SQL Server 2019 (15.x) se pueden restaurar mediante SQL Server 2019 (15.x) CU 16 y versiones posteriores.

  • Al instalar SQL Server 2022 (16.x) en Ubuntu 22.04, es posible que vea el siguiente mensaje de error: Failed to start Microsoft SQL Server Database Engine. Si revisa el registro de errores, verá una ruta de acceso incorrecta para las bases de datos del sistema.

    Para resolver el problema, inicie la instancia en modo de usuario único y use ALTER DATABASE ... MODIFY FILE para mover la ubicación configurada de las bases de datos del sistema a la ubicación predeterminada /var/opt/mssql/data. Después de este cambio, reinicie el servicio.

Red

Las características relacionadas con conexiones TCP salientes del proceso sqlservr (como servidores vinculados, PolyBase o grupos de disponibilidad) podrían no funcionar si se cumplen las condiciones siguientes:

  • El servidor de destino se especifica como un nombre de host, y no como una dirección IP.

  • La instancia de origen tiene deshabilitado IPv6 en el kernel. Para verificar si el sistema tiene IPv6 habilitado en el kernel, todas las pruebas siguientes necesitan completarse sin errores:

    • cat /proc/cmdline imprime la línea de comandos de arranque del kernel actual. El resultado no tiene que contener ipv6.disable=1.
    • El directorio /proc/sys/net/ipv6/ debe existir.
    • Un programa de C que realice una llamada a socket(AF_INET6, SOCK_STREAM, IPPROTO_IP) tiene que ejecutarse sin errores (la llamada del sistema tiene que devolver fd != -1 y no producir errores con EAFNOSUPPORT).

El error exacto depende de la característica. En el caso de servidores vinculados, verá un error de tiempo de expiración de inicio de sesión. Para los grupos de disponibilidad, el DDL ALTER AVAILABILITY GROUP JOIN en el servidor secundario producirá un error después de cinco minutos de tipo download configuration timeout.

Para solucionar este problema, emplee una de las siguientes opciones:

  • Use direcciones IP en lugar de nombres de host para especificar el destino de la conexión TCP.

  • Habilite IPv6 en el kernel; para hacerlo, quite ipv6.disable=1 de la línea de comandos de arranque. El método depende de la distribución de Linux y el cargador de arranque que use (por ejemplo, grub). Si quiere deshabilitar IPv6, puede hacerlo si establece net.ipv6.conf.all.disable_ipv6 = 1 en la configuración de sysctl (por ejemplo, /etc/sysctl.conf). Aunque esta configuración impide que el adaptador de red del sistema obtenga una dirección IPv6, permite que funcionen las características de sqlservr.

No se admite TLS 1.3

Se aplica a: SQL Server 2022 (16.x) exclusivamente.

Aunque TLS 1.3 se admite en SQL Server 2022 (16.x) para Windows, debe usar TLS 1.2 en Linux.

Network File System (NFS)

Si usa recursos compartidos remotos de NFS (Network File System) en producción, tenga en cuenta los siguientes requisitos de compatibilidad:

  • Use NFS versión 4.2 o versiones posteriores. Las versiones anteriores de NFS no admiten las características necesarias, como fallocate y la creación de archivos dispersos, que son comunes a los sistemas de archivos modernos.

  • Busque solo los directorios /var/opt/mssql en el montaje NFS. No se admiten otros archivos, como los archivos binarios del sistema de SQL Server.

  • Asegúrese de que los clientes de NFS usen la opción nolock al montar el recurso compartido remoto.

Localización

  • Si usa una configuración regional distinta del inglés (en_us) durante la configuración, tendrá que usar la codificación UTF-8 en el terminal o en la sesión de Bash. Si usa la codificación ASCII, puede que se muestre un error parecido a la siguiente salida:

    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf1' in position 8: ordinal not in range(128)

    Si no puede usar la codificación UTF-8, ejecute el programa de instalación con la variable de entorno MSSQL_LCID para especificar la opción de idioma.

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • Al ejecutar mssql-conf setup y realizar una instalación de SQL Server en un idioma distinto del inglés, se muestran caracteres extendidos incorrectos después del texto localizado, "Configurando SQL Server…". O bien, para instalaciones basadas en idiomas no latinos, puede que la frase no se muestre en absoluto. La frase que falta tendría que mostrar la siguiente cadena localizada:

    El PID de licencias se procesó correctamente. La nueva edición es [Edición <nombre>].

    Esta cadena solo se genera con fines informativos, no afecta a la instalación correcta de SQL Server de ninguna manera.

No todos los filtros están disponibles en esta versión, incluidos los filtros para documentos de Microsoft Office. Para obtener una lista de los filtros admitidos, vea Instalar la búsqueda de texto completo de SQL Server en Linux.

SQL Server Integration Services (SSIS)

No se admite el paquete mssql-server-is en SUSE Linux Enterprise Server (SLES). El paquete se admite en Ubuntu y Red Hat Enterprise Linux (RHEL), y Ubuntu.

Los paquetes de Integration Services pueden utilizar conexiones ODBC en Linux. Esta función se ha probado con SQL Server y los controladores ODBC de MySQL, pero también se espera que funcione con cualquier controlador ODBC de Unicode que respete la especificación de ODBC. En tiempo de diseño, puede proporcionar un DSN o una cadena de conexión para conectarse a los datos ODBC; también puede usar la autenticación de Windows. Para obtener más información, vea la entrada de blog que anuncia la compatibilidad con ODBC en Linux.

Las características siguientes no se admiten en esta versión al ejecutar paquetes de SSIS en Linux:

  • Integration Services Base de datos del catálogo
  • Ejecución de paquetes programada por el Agente SQL Server
  • Autenticación de Windows
  • Componentes de terceros
  • Captura de datos modificados (CDC)
  • Integration Services Escalar horizontalmente
  • Azure Feature Pack para SSIS
  • Compatibilidad con Hadoop y HDFS
  • Microsoft Connector for SAP BW

Para obtener una lista de los componentes de SSIS integrados que no se admiten actualmente, o que se admiten con determinadas limitaciones, vea Limitaciones y problemas conocidos de SSIS en Linux.

Para obtener más información sobre SSIS en Linux, vea los artículos siguientes:

SQL Server Management Studio (SSMS)

Las siguientes limitaciones solo se aplican a SQL Server Management Studio en Windows conectado a SQL Server en Linux.

  • No se admiten los planes de mantenimiento.

  • El almacén de administración de datos (MDW) y el recopilador de datos no se admiten en SQL Server Management Studio.

  • Los componentes de la interfaz de usuario de SQL Server Management Studio que tienen opciones de autenticación de Windows o de registro de eventos de Windows no funcionan con Linux. Puede usar estas características con otras opciones, como inicios de sesión de SQL Server.

  • El número de archivos de registro que se conservarán no se puede modificar.

Alta disponibilidad y recuperación ante desastres

Se aplica a: SQL Server 2022 (16.x) exclusivamente.

Para paquetes de SQL Server 2022 (16.x) para RHEL 9 y Ubuntu 22.04, al habilitar la pila de alta disponibilidad y recuperación ante desastres (DR) con Pacemaker, puede experimentar problemas con la conmutación por error manual y automática. Actualmente, estos problemas se limitan a la pila de alta disponibilidad de Pacemaker. Otras pilas de alta disponibilidad, como HPE Serviceguard y DH2i DxEnterprise, no tienen estos problemas.

El grupo de disponibilidad cambia continuamente el rol principal

Al trabajar con grupos de disponibilidad (AG) en SQL Server 2022 (16.x) en RHEL 8, Ubuntu 20.04 y versiones posteriores, puede darse una situación en la que el rol principal del grupo de disponibilidad cambia de un nodo a otro continuamente. Actualmente, puede solucionar el problema con estos pasos:

  1. Actualice la propiedad failure-timeout del recurso ag_cluster a 0s:

    pcs resource update ag_cluster meta failure-timeout=0s
    

    Para más información, consulte Configuración de un clúster de Pacemaker para grupos de disponibilidad de SQL Server.

  2. Restablezca el recuento de errores en el clúster de Pacemaker:

    crm_failcount -r ag_resource_name -delete
    

Machine Learning Services

Se aplica a: SQL Server 2022 (16.x) exclusivamente.

Para paquetes de SQL Server 2022 (16.x) para RHEL 9 y Ubuntu 22.04, hay algunos requisitos previos que deben tener en cuenta con cgroup-v1 antes de instalar Machine Learning Services.

  1. Como requisito previo, cgroup-v1 debe habilitarse según Uso de cgroupfs para administrar manualmente cgroups Red Hat Enterprise Linux 9 desde Red Hat.

  2. A continuación, siga las instrucciones para instalar SQL Machine Learning Services como se documenta.

  3. Deshabilite el aislamiento del espacio de nombres de red.

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Reinicie el servicio mssql-launchpadd para que los cambios entren en vigor.

    sudo systemctl restart mssql-launchpadd