Partilhar via


SQL Server no Linux: Problemas conhecidos

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

Geral

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

Questão Resolução
O comprimento do nome do host onde o SQL Server está instalado precisa ser de 15 caracteres ou menos. Altere o nome no /etc/hostname para um valor de 15 caracteres ou menos.
Definir manualmente a hora do sistema para trás no tempo faz com que o SQL Server pare de atualizar a hora interna do sistema no Mecanismo de Banco de Dados. Reinicie o SQL Server.
Apenas instalações de instância única são suportadas. Se você quiser ter mais de uma instância em um determinado host, considere usar máquinas virtuais ou contêineres Linux.
O SQL Server Configuration Manager não pode se conectar ao SQL Server no Linux. Nenhuma.
O idioma padrão da conta sa é o inglês. Altere o idioma da conta sa com a declaração ALTER LOGIN.
O provedor OLE DB registra 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 o .dll assinado corretamente.
O comando Redefinir senha usando mssql-conf gera 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).

Bases 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 com mssql-conf.

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

  • Certos algoritmos (pacotes de codificação) para Transport Layer Security (TLS) não funcionam corretamente com o SQL Server no Linux. Isso resulta em falhas de conexão ao tentar se conectar ao SQL Server e problemas ao estabelecer conexões entre réplicas em grupos de alta disponibilidade.

    Para resolver esse problema, modifique o script de configuração de mssql.conf para o SQL Server no Linux para desabilitar pacotes de codificação problemáticos, seguindo estas etapas:

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

      [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
      
  • Os bancos de dados do SQL Server 2014 (12.x) no Windows que usam In-Memory OLTP não podem ser restaurados para o SQL Server no Linux. Se o banco de dados do SQL Server 2014 (12.x) usar In-Memory OLTP, primeiro atualize os bancos de dados para uma versão mais recente do SQL Server no Windows. Depois, pode-se movê-lo para o SQL Server no Linux, com backup/restauração ou destacar/anexar.

  • A permissão de utilizador ADMINISTER BULK OPERATIONS não é suportada no Linux de momento.

  • Os backups compactados por TDE feitos usando SQL Server 2019 (15.x) CU 16 e versões posteriores não podem ser restaurados em versões anteriores do SQL Server 2019 (15.x). Para obter mais informações, consulte CORREÇÃO: O erro 3241 ocorre ao executar RESTORE LOG ou RESTORE DATABASE.

    Os backups compactados com TDE (Transparent Data Encryption) feitos usando versões anteriores do SQL Server 2019 (15.x) ainda podem ser restaurados usando o SQL Server 2019 (15.x) 16 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ê revisar o log de erros, verá um caminho incorreto para os bancos de dados do sistema.

    Para contornar 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

Recursos que envolvem conexões TCP de saída do processo de sqlservr, como servidores vinculados, PolyBase ou grupos de disponibilidade, podem não funcionar se ambas as condições a seguir forem atendidas:

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

  • A instância de origem tem o IPv6 desativado no kernel. Para verificar se o seu sistema tem IPv6 ativado no kernel, todos os seguintes testes devem passar:

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

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

Para contornar esse problema, execute uma das seguintes opções:

  • Use IPs em vez de nomes de 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 grub. Se desejar que o IPv6 seja desativado, você ainda poderá 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 o adaptador de rede do sistema de obter um endereço IPv6, ela permite que os recursos sqlservr funcionem.

TLS 1.3 não suportado

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

Embora o TLS 1.3 seja suportado no SQL Server 2022 (16.x) para Windows, você deve usar o TLS 1.2 no Linux.

Sistema de arquivos de rede (NFS)

Se você usar compartilhamentos remotos NFS (Network File System) na 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 suportam os recursos necessários, como a criação de arquivos fallocate e esparsos, comuns aos sistemas de arquivos modernos.

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

  • Certifique-se de que os clientes NFS usem a opção nolock ao montar o compartilhamento remoto.

Localização

  • Se sua localidade não for em inglês (en_us) durante a configuração, você deve usar a codificação UTF-8 em sua sessão/terminal bash. Se utilizar a codificação ASCII, poderá ver um erro semelhante à seguinte saída:

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

    Se você não puder usar a codificação UTF-8, execute 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
    
  • Quando se executa mssql-conf setupe realiza uma instalação do SQL Server não em inglês, caracteres estendidos incorretos podem ser exibidos após o texto no idioma local, "configurando o SQL Server...". Ou, para instalações que não usem o alfabeto latino, pode faltar completamente a frase. A frase ausente deve exibir a seguinte cadeia de caracteres localizada:

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

    Esta mensagem é exibida apenas para informação e não afeta a instalação do SQL Server com êxito de forma alguma.

Nem todos os filtros estão disponíveis com esta versão, incluindo filtros para documentos do Microsoft Office. Para obter uma lista de filtros com suporte, consulte Instalar o SQL Server Full-Text Search no Linux.

SQL Server Integration Services (SSIS)

O pacote mssql-server-is não é suportado no SUSE Linux Enterprise Server (SLES). O pacote é suportado no Ubuntu e Red Hat Enterprise Linux (RHEL).

Os pacotes do Integration Services podem usar conexões ODBC no Linux. Essa funcionalidade foi testada com o SQL Server e os drivers ODBC do MySQL, mas também deve funcionar com qualquer driver ODBC Unicode que observe a especificação ODBC. Em tempo de design, você pode fornecer um DSN ou uma cadeia de conexão para se conectar aos dados ODBC; você também pode usar a autenticação do Windows. Para obter mais informações, consulte a postagem do blog anunciando o suporte a ODBC no Linux.

Os seguintes recursos não são suportados nesta versão quando você executa pacotes SSIS no Linux:

  • Banco de dados do Catálogo do Integration Services
  • Execução de pacote agendada pelo SQL Server Agent
  • Autenticação do Windows
  • Componentes de terceiros
  • Captura de Alteração de Dados (CDC)
  • Expansão do Integration Services
  • Azure Feature Pack para SSIS
  • Suporte a Hadoop e HDFS
  • Microsoft Connector para SAP BW

Para obter uma lista de componentes SSIS internos que não são suportados atualmente ou que são suportados com limitações, consulte Limitações e problemas conhecidos do SSIS no Linux.

Para obter mais informações sobre o SSIS no Linux, consulte os seguintes artigos:

SQL Server Management Studio (SSMS)

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

  • Os planos de manutenção não são suportados.

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

  • Os componentes da interface do usuário do SQL Server Management Studio que têm 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 desastres

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

Quando se executa o SQL Server 2022 (16.x) e versões anteriores no RHEL 9, como um aplicativo confinado com SELinux habilitado, o clustering do Pacemaker poderá não funcionar conforme o esperado. Você deve instalar o SQL Server 2022 (16.x) como um aplicativo não confinado com o SELinux ativado, para usar os recursos de cluster do Pacemaker. Esse problema é resolvido no SQL Server 2022 (16.x) CU 17.

Serviços de Machine Learning

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

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

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

  2. Em seguida, siga as instruções para instalar o SQL Machine Learning Services conforme documentado.

  3. Desative o isolamento do namespace de rede.

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

    sudo systemctl restart mssql-launchpadd