SQL Server em Linux: problemas conhecidos

As seções a seguir descrevem problemas conhecidos com o SQL Server em Linux.

Geral

A tabela a seguir lista os problemas mais comuns com o SQL Server em Linux.

Problema Resolução
O comprimento do nome do host em que SQL Server é instalado precisa ter 15 caracteres ou menos. Altere o nome em /etc/hostname para um valor de 15 caracteres ou menos.
Definir manualmente a hora do sistema retroativamente faz com que o SQL Server pare de atualizar a hora interna do sistema no mecanismo de banco de dados. Reinicie o SQL Server.
Há suporte apenas para instalações de instância única. Se quiser ter mais de uma instância em um determinado host, considere usar máquinas virtuais ou contêineres do Linux.
SQL Server O Configuration Manager não pode se conectar ao SQL Server em Linux. Nenhum.
O idioma padrão do logon de sa é inglês. Altere o idioma do logon do sa usando a instrução ALTER LOGIN.
O provedor OLE DB registra em log o seguinte aviso:

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.
Nenhuma ação é necessária. O provedor OLE DB é assinado usando SHA256. O Mecanismo de banco de dados do SQL Server não valida a .dll assinada corretamente.
O comando Redefinir senha usando mssql-conf lança o seguinte erro:

Unable to set the system administrator password. Please consult the ERRORLOG in /path for more information.
A mensagem de erro é um falso negativo. A redefinição de senha foi bem-sucedida e você pode continuar usando a nova senha.

Aplica-se a: somente imagens de contêiner do SQL Server 2022 (16.x).

Bancos de dados

  • O banco de dados master não pode ser movido com o utilitário mssql-conf. Outros bancos de dados do sistema podem ser movidos usando mssql-conf.

  • Ao restaurar um banco de dados do qual foi feito backup no SQL Server em Windows, você deve usar a cláusula WITH MOVE na instrução Transact-SQL. Para mais informações, consulte Migrar um banco de dados do SQL Server do Windows para o Linux usando o recurso de backup e restauração.

  • Certos algoritmos (pacotes de criptografia) para o protocolo TLS não funcionam corretamente com SQL Server no Linux. Isso causa falhas de conexão ao tentar se conectar ao SQL Server e problemas de estabelecimento de conexões entre réplicas em grupos de alta disponibilidade.

    Para resolver o problema, modifique o script de configuração mssql.conf do SQL Server em Linux para desabilitar conjuntos de criptografia problemáticos, seguindo estas etapas:

    1. Adicione a seguinte seção a /var/opt/mssql/mssql.conf. O símbolo de exclamação (!) nega a expressão. Isso informa ao OpenSSL para não usar o conjunto de criptografia a seguir.

      [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 o SQL Server com o seguinte comando.

      sudo systemctl restart mssql-server
      
  • Bancos de dados do SQL Server 2014 (12.x) no Windows que usam OLTP in-memory não podem ser restaurados par o SQL Server em Linux. Se o banco de dados do SQL Server 2014 (12.x) usar OLTP in-memory, primeiro atualize os bancos de dados para uma versão mais recente do SQL Server no Windows. Em seguida, você pode movê-lo para o SQL Server em Linux, com backup/restauração ou desanexar/anexar.

  • A permissão do usuário ADMINISTER BULK OPERATIONS não é compatível no Linux no momento.

  • Backups compactados por TDE que foram realizados usando a CU 16 do SQL Server 2019 (15.x) e versões posteriores não podem ser restaurados para versões anteriores da CU do SQL Server 2019 (15.x). Para obter mais informações, confira CORREÇÃO: o erro 3241 ocorre durante a execução de RESTORE LOG ou RESTORE DATABASE.

    Backups compactados TDE (Transparent Data Encryption) que são feitos usando versões anteriores de CU do SQL Server 2019 (15.x) ainda podem ser restaurados usando a CU 16 do SQL Server 2019 (15.x) e versões posteriores.

  • Quando você instala o SQL Server 2022 (16.x) no Ubuntu 22.04, você pode ver a seguinte mensagem de erro: Failed to start Microsoft SQL Server Database Engine. Se você analisar o log de erros, verá um caminho incorreto para os bancos de dados do sistema.

    Para solucionar esse problema, inicie a instância no modo de usuário único e use ALTER DATABASE ... MODIFY FILE para mover o local configurado dos bancos de dados do sistema para o local padrão /var/opt/mssql/data. Depois de fazer essa alteração, reinicie o serviço.

Rede

Os recursos que envolvem conexões TCP de saída do processo do sqlservr, como servidores vinculados, o PolyBase ou grupos de disponibilidade, talvez não funcionem se as seguintes condições forem atendidas:

  • O servidor de destino é especificado como um nome de host e não como um endereço IP.

  • A instância de origem tem IPv6 desabilitado no kernel. Para verificar se o sistema tem o IPv6 habilitado no kernel, todos os testes a seguir precisam ser aprovados:

    • cat /proc/cmdline imprime o cmdline de inicialização do kernel atual. A saída não deve conter ipv6.disable=1.
    • O diretório /proc/sys/net/ipv6/ precisa existir.
    • Um programa em C que chama socket(AF_INET6, SOCK_STREAM, IPPROTO_IP) deve ter êxito – syscall deve retornar um fd != -1 e não falhar com EAFNOSUPPORT.

O erro exato depende do recurso. Para servidores vinculados, você verá um erro de tempo limite de logon. Para grupos de disponibilidade, o DDL do ALTER AVAILABILITY GROUP JOIN no secundário falhará após cinco minutos com um erro download configuration timeout.

Para encontrar uma solução alternativa para esse problema, faça uma das seguintes opções:

  • Use IPs em vez de nomes do host para especificar o destino da conexão TCP.

  • Habilite o IPv6 no kernel removendo ipv6.disable=1 da linha de comando de inicialização. O método depende da distribuição Linux e do bootloader, como o grub. Se você deseja que o IPv6 seja desabilitado, ainda pode desativá-lo definindo net.ipv6.conf.all.disable_ipv6 = 1 na configuração sysctl (por exemplo, /etc/sysctl.conf). Embora essa configuração impeça que o adaptador de rede do sistema obtenha um endereço IPv6, ela permite que os recursos do sqlservr funcionem.

Não há suporte para o TLS 1.3

Aplica-se a: SQL Server 2022 (16.x) somente.

Embora haja suporte para o TLS 1.3 no SQL Server 2022 (16.x) para Windows, você deverá usar o TLS 1.2 no Linux.

NFS (sistema de arquivos de rede)

Se você usar compartilhamentos remotos NFS (Network File System) em produção, observe os seguintes requisitos de suporte:

  • Use o NFS versão 4.2 ou versões posteriores. As versões mais antigas do NFS não dão suporte aos recursos necessários, como fallocate e criação de arquivos esparsos, comuns nos sistemas de arquivos modernos.

  • Localize somente os diretórios /var/opt/mssql na montagem NFS. Não há suporte para outros arquivos, como os binários do sistema SQL Server.

  • Verifique se os clientes NFS usam a opção nolock ao montar o compartilhamento remoto.

Localização

  • Se a sua localidade não for inglês (en_us) durante a instalação, você precisará usar a codificação UTF-8 em sua sessão/terminal de Bash. Se você usar a codificação ASCII, poderá ver um erro semelhante ao seguinte resultado:

    UnicodeEncodeError: o codec 'ascii' não pode codificar o caractere u'\xf1' na posição 8: ordinal não no intervalo(128)

    Se não for possível usar a codificação UTF-8, você deverá executar a instalação usando a variável de ambiente MSSQL_LCID para especificar sua escolha de idioma.

    sudo MSSQL_LCID=<LcidValue> /opt/mssql/bin/mssql-conf setup
    
  • Ao executar mssql-conf setup e executar uma instalação de SQL Server com idioma diferente do inglês, caracteres estendidos incorretos podem ser exibidos após o texto localizado, "Configurando o SQL Server...". Ou, para instalações não baseadas em latim, a frase pode estar completamente ausente. A frase ausente deve exibir a seguinte cadeia de caracteres localizada:

    O PID de licenciamento foi processado com êxito. A nova edição é [<Nome> edição].

    Essa sequência de caracteres é saída apenas para fins informativos, não afeta a instalação bem-sucedida do SQL Server de forma alguma.

Nem todos os filtros estão disponíveis nesta versão, incluindo filtros para documentos do Microsoft Office. Para obter uma lista de filtros com suporte, confira Instalar a pesquisa de texto completo do SQL Server no Linux.

O SQL Server Integration Services (SSIS)

O pacote mssql-server-is não é compatível com o SLES (SUSE Linux Enterprise Server). O pacote é compatível com o RHEL (Red Hat Enterprise Linux) e o Ubuntu.

Os pacotes do Integration Services podem usar as conexões ODBC no Linux. Essa funcionalidade foi testada com o SQL Server e os drivers ODBC do MySQL, mas também é esperado que ela funcione com qualquer driver ODBC Unicode que observa a especificação ODBC. Em tempo de design, é possível fornecer um DSN ou uma cadeia de conexão para conectar-se aos dados ODBC; também é possível usar a autenticação do Windows. Para saber mais, confira a postagem no blog que anunciou o suporte do ODBC para Linux.

Não há suporte para os seguintes recursos nesta versão ao executar pacotes SSIS no Linux:

  • Integration Services Banco de dados de catálogo
  • Execução de pacotes agendada pelo SQL Server Agent
  • Autenticação do Windows
  • Componentes de terceiros
  • CDA (captura de dados de alterações)
  • Integration Services Scale Out
  • Feature Pack do Azure para SSIS
  • Suporte para Hadoop e HDFS
  • Microsoft Connector for SAP BW

Para obter uma lista de componentes internos do SSIS que não têm suporte no momento ou que têm suporte com limitações, confira Limitações e problemas conhecidos do SSIS no Linux.

Para saber mais sobre o SSIS no Linux, confira os seguintes artigos:

SQL Server Management Studio (SSMS)

As seguintes limitações se aplicam ao SQL Server Management Studio no Windows conectado ao SQL Server no Linux.

  • Não há suporte para planos de manutenção.

  • Não há suporte para a extensão MDW (Data Warehouse de Gerenciamento) e o coletor de dados no SQL Server Management Studio.

  • Componentes da interface do usuário do SQL Server Management Studio que têm as opções de Autenticação do Windows ou log de eventos do Windows não funcionam com o Linux. Você ainda pode usar esses recursos com outras opções, como logons do SQL Server.

  • O número de arquivos de log a serem retidos não pode ser modificado.

Alta disponibilidade e recuperação de desastre

Aplica-se a: SQL Server 2022 (16.x) somente.

Para pacotes do SQL Server 2022 (16.x) para RHEL 9 e Ubuntu 22.04, ao habilitar a pilha HA/DR com o Pacemaker, você pode enfrentar problemas com failover automático e manual. Atualmente, esses problemas estão limitados à pilha de HA do Pacemaker. Outras pilhas de HA, incluindo o HPE Serviceguard e o DH2i DXEnterprise, não têm esses problemas.

O grupo de disponibilidade alterna continuamente a função principal

Ao trabalhar com grupos de disponibilidade (AGs) no SQL Server 2022 (16.x) no RHEL 8, Ubuntu 20.04 e versões posteriores, você pode encontrar uma situação em que a função principal no AG alterna de um nó para outro continuamente. Atualmente, você pode contornar o problema com estas etapas:

  1. Atualize a propriedade failure-timeout do recurso ag_cluster para 0s, execute:

    pcs resource update ag_cluster meta failure-timeout=0s
    

    Para obter mais informações, consulte Configurar um cluster do Pacemaker para grupos de disponibilidade do SQL Server.

  2. Redefina a contagem de falhas no cluster do Pacemaker:

    crm_failcount -r ag_resource_name -delete
    

Serviços de Machine Learning

Aplica-se a: SQL Server 2022 (16.x) somente.

Para pacotes do SQL Server 2022 (16.x) para o RHEL 9 e Ubuntu 22.04, há alguns pré-requisitos a serem levados em consideração com cgroup-v1 antes de instalar os Serviços de Machine Learning.

  1. Como pré-requisito, cgroup-v1 precisa ser habilitado de acordo com Usar cgroupfs para gerenciar manualmente cgroups do Red Hat Enterprise do Linux 9 da Red Hat.

  2. Em seguida, siga as instruções para instalar Serviços de Machine Machine Learning do SQL conforme documentado.

  3. Desabilite o isolamento do namespace de rede.

    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Reinicie o serviço do mssql-launchpadd para que as alterações entrem em vigor.

    sudo systemctl restart mssql-launchpadd