Instalar a Extensão de Linguagem Java do SQL Server no Linux

Aplicável a: SQL Server 2019 (15.x) - Linux e versões posteriores

Saiba como instalar o componente Extensão de Linguagem Java do SQL Server no Linux. A Extensão da Linguagem Java faz parte das Extensões de Linguagem do SQL Server e é um complemento do Mecanismo de Banco de Dados.

Embora você possa instalar o Mecanismo de Banco de Dados e as Extensões de Linguagem simultaneamente, é uma prática recomendada instalar e configurar primeiro o Mecanismo de Banco de Dados do SQL Server, para que você possa resolver quaisquer problemas antes de adicionar mais componentes.

Pré-requisitos

  • A localização do pacote das extensões Java está nos repositórios de origem do Linux do SQL Server. Se você já configurou repositórios de origem para a instalação do Mecanismo de Banco de Dados, pode executar os comandos de instalação do pacote mssql-server-extensibility-java usando o mesmo registro de repositório.

Lista de pacotes

Em um dispositivo conectado à Internet, os pacotes são baixados e instalados independentemente do Mecanismo de Banco de Dados usando o instalador de pacotes para cada sistema operacional. A tabela a seguir descreve todos os pacotes disponíveis.

Nome do pacote Aplica-se a Descrição
mssql-server-extensibility Todos os idiomas Estrutura de extensibilidade usada para a extensão de linguagem Java
mssql-server-extensibility-java Java Aplicável a: SQL Server 2019 (15.x) somente no Linux

Estrutura de extensibilidade usada para a extensão de linguagem Java, incluindo suporte a um runtime Java

Instalar a extensão de linguagem Java

Você pode instalar Extensões de Linguagem e Java no Linux instalando mssql-server-extensibility-java. Quando você instala mssql-server-extensibility-java, o pacote instala automaticamente o JRE 11 caso ele ainda não esteja instalado. Ele também adiciona o caminho da JVM a uma variável de ambiente chamada JRE_HOME.

Para habilitar a extensão de linguagem Java, crie um binário personalizado seguindo as instruções da página da Extensão de Linguagem Java no GitHub.

Observação

Em um servidor conectado à Internet, as dependências de pacote são baixadas e instaladas como parte da instalação do pacote principal. Se o servidor não estiver conectado à Internet, veja mais detalhes na instalação offline.

Você pode baixar e instalar qualquer runtime Java que desejar, incluindo o Build da Microsoft do OpenJDK mais recente ou o runtime Java licenciado oficialmente. A partir do SQL Server 2022 (16.x), a Instalação do SQL Server não instala um Java Runtime.

Para habilitar a extensão de linguagem Java, crie um binário personalizado seguindo as instruções da página da Extensão de Linguagem Java no GitHub.

Comando de instalação do Red Hat

Você pode instalar Extensões de Linguagem para Java no Red Hat usando o seguinte comando.

Dica

Se possível, execute yum clean all para atualizar os pacotes no sistema antes da instalação.

# Install as root or sudo
sudo yum install mssql-server-extensibility-java

Comando de instalação do Ubuntu

Você pode instalar Extensões de Linguagem para Java no Ubuntu usando o seguinte comando.

Dica

Se possível, execute apt-get update para atualizar os pacotes no sistema antes da instalação. Além disso, algumas imagens do Docker do Ubuntu podem não ter a opção https apt transport. Para instalá-la, use apt-get install apt-transport-https.

# Install as root or sudo
sudo apt-get install mssql-server-extensibility-java

Comando de instalação do SUSE

Você pode instalar Extensões de Linguagem para Java no SUSE usando o seguinte comando.

# Install as root or sudo
sudo zypper install mssql-server-extensibility-java

Configuração pós-instalação (obrigatória)

  1. Conceder permissões no Linux

    Você não precisará executar esta etapa se usar bibliotecas externas. A maneira recomendada de trabalhar é usar bibliotecas externas. Para obter ajuda com a criação de uma biblioteca externa a partir do seu arquivo jar, consulte CRIAR BIBLIOTECA EXTERNA

    Se você não estiver usando bibliotecas externas, precisará fornecer ao SQL Server permissões para executar as classes Java no seu jar.

    Para conceder acesso de leitura e execução a um arquivo jar, execute o seguinte comando chmod no arquivo jar. Recomendamos sempre colocar seus arquivos de classe em um jar quando você trabalha com o SQL Server. Para obter ajuda com a criação de um jar, consulte Criar um arquivo jar Java a partir de arquivos de classe.

    chmod ug+rx <MyJarFile.jar>
    

    Você também precisa dar permissões mssql_satellite ao arquivo jar para ler/executar.

    chown mssql_satellite:mssql_satellite <MyJarFile.jar>
    

    A configuração adicional é principalmente por meio da ferramenta mssql-conf.

  2. Adicione a conta de usuário mssql usada para executar o serviço SQL Server. Isso será necessário se você não tiver executado a instalação anteriormente.

    sudo /opt/mssql/bin/mssql-conf setup
    
  3. Habilite o acesso à rede de saída. O acesso à rede de saída está desabilitado por padrão. Para habilitar solicitações de saída, defina a propriedade outboundnetworkaccess booliana usando a ferramenta mssql-conf. Para obter mais informações, confira Configurar o SQL Server em Linux com mssql-conf.

    # Run as SUDO or root
    # Enable outbound requests over the network
    sudo /opt/mssql/bin/mssql-conf set extensibility outboundnetworkaccess 1
    
  4. Reinicie o serviço SQL Server Launchpad e a instância do Mecanismo de Banco de Dados para ler os valores atualizados do arquivo INI. Uma mensagem de reinicialização lembrará você sempre que uma configuração relacionada à extensibilidade for modificada.

    systemctl restart mssql-launchpadd
    systemctl restart mssql-server.service
    
  5. Habilite a execução de scripts externos usando o Azure Data Studio ou outra ferramenta, como o SQL Server Management Studio (somente Windows), que executa o T-SQL.

    EXEC sp_configure 'external scripts enabled', 1;
    RECONFIGURE WITH OVERRIDE;
    
  6. Reinicie o serviço mssql-launchpadd novamente.

  7. Para cada banco de dados no qual você deseja usar extensões de linguagem, é necessário registrar a linguagem externa com CREATE EXTERNAL LANGUAGE. Veja as etapas na próxima seção.

Registrar linguagem externa

Para cada banco de dados no qual você deseja usar extensões de linguagem, é necessário registrar a linguagem externa com CREATE EXTERNAL LANGUAGE.

O exemplo a seguir adiciona uma linguagem externa chamada Java a um banco de dados no SQL Server em Linux.

CREATE EXTERNAL LANGUAGE Java
FROM (CONTENT = N'/opt/mssql-extensibility/lib/java-lang-extension.tar.gz',
    FILE_NAME = 'javaextension.so',
    ENVIRONMENT_VARIABLES = N'{"JRE_HOME":"/opt/mssql/lib/zulu-jre-11"}');

Para a extensão Java, a variável de ambiente JRE_HOME é usada para determinar o caminho para localizar e inicializar a JVM.

O DDL CREATE EXTERNAL LANGUAGE fornece um parâmetro (ENVIRONMENT_VARIABLES) para definir variáveis de ambiente especificamente para o processo que hospeda a extensão. Esse processo é a maneira recomendada e mais eficaz de definir variáveis de ambiente exigidas por extensões de linguagem externas.

Para obter mais informações, confira CREATE EXTERNAL LANGUAGE.

Verifique a instalação

A integração de recursos Java não inclui bibliotecas, mas você pode executar grep -r JRE_HOME /etc para confirmar a criação da variável de ambiente JAVA_HOME.

Para validar a instalação, execute um script T-SQL que executa um procedimento armazenado do sistema que invoca o Java. Você precisa de uma ferramenta de consulta para essa tarefa. O Azure Data Studio é uma boa opção. Outras ferramentas comumente usadas, como o SQL Server Management Studio, são somente para Windows. Se você tiver um computador Windows com essas ferramentas, use-o para se conectar à sua instalação Linux do Mecanismo de Banco de Dados.

Instalação completa do SQL Server e da Extensão de Linguagem Java

Você pode instalar e configurar o mecanismo de banco de dados e a Extensão de Linguagem Java em um procedimento acrescentando pacotes e parâmetros Java em um comando que instala o mecanismo de banco de dados.

  1. Forneça uma linha de comando que inclua o mecanismo de banco de dados, além dos recursos de extensão de linguagem.

    Você pode adicionar a extensibilidade do Java a uma instalação do mecanismo de banco de dados.

    sudo yum install -y mssql-server mssql-server-extensibility-java
    
  2. Aceite os contratos de licença e conclua a configuração pós-instalação. Use a ferramenta mssql-conf para esta tarefa.

    sudo /opt/mssql/bin/mssql-conf setup
    

    Esta etapa solicita que você aceite o contrato de licença do Mecanismo de Banco de dados, escolha uma edição e defina a senha do administrador.

  3. Reinicie o serviço, se solicitado a fazê-lo.

    sudo systemctl restart mssql-server.service
    

Instalação autônoma

Use a instalação autônoma do Mecanismo de Banco de Dados e adicione os pacotes para mssql-server-extensibility-java.

Instalação offline

Siga as instruções de Instalação offline para conhecer as etapas da instalação dos pacotes. Encontre seu site de download e, em seguida, baixe pacotes específicos usando a lista de pacotes mais adiante nesta seção.

Dica

Várias das ferramentas de gerenciamento de pacotes fornecem comandos que podem ajudá-lo a determinar as dependências do pacote. Para yum, use sudo yum deplist [package]. Para o Ubuntu, use sudo apt-get install --reinstall --download-only [package name] seguido por dpkg -I [package name].deb.

Site de download

Você pode baixar os pacotes em https://packages.microsoft.com/. Todos os pacotes para Java são colocados no pacote do Mecanismo de Banco de Dados.

Caminhos de download

Pacote Distribuição Local de download
mssql/extensibility-java packages Red Hat 8 https://packages.microsoft.com/rhel/8/mssql-server-2019/
mssql/extensibility-java packages SUSE v15 https://packages.microsoft.com/sles/15/mssql-server-2019/
mssql/extensibility-java packages Ubuntu 20.04 https://packages.microsoft.com/ubuntu/20.04/mssql-server-2019/pool/main/m/

Lista de pacotes

Dependendo de quais extensões você deseja usar, baixe os pacotes necessários para uma linguagem específica. Os nomes de arquivos exatos incluem informações da plataforma no sufixo, mas os nomes de arquivo a seguir devem ajudar você a determinar quais arquivos obter.

  • Pacotes principais

    • mssql-server-15.0.1000
    • mssql-server-extensibility-15.0.1000
  • Java

    • mssql-server-extensibility-java-15.0.1000

Limitações

No momento, a autenticação implícita não está disponível no Linux, o que significa que você não pode se conectar novamente ao servidor usando o Java em andamento para acessar dados ou outros recursos.

Governança de recursos

Há paridade entre o Linux e o Windows para Governança de recursos para pools de recursos externos, mas as estatísticas para sys.dm_resource_governor_external_resource_pools atualmente têm unidades diferentes no Linux.

Observação

As estatísticas na tabela a seguir são provenientes dos subsistemas de Grupos de Controle (cgroups) especificados.

Nome da coluna Descrição Valor no Linux
peak_memory_kb A quantidade máxima de memória usada para o pool de recursos. No Linux, essa estatística é proveniente do subsistema memory, em que o valor é memory.max_usage_in_bytes
write_io_count O total de E/Ss de gravação emitidas desde que as estatísticas do Resource Governor foram redefinidas. No Linux, essa estatística é proveniente do subsistema blkio, em que o valor na linha de gravação é blkio.throttle.io_serviced
read_io_count O total de E/S lidas emitidas desde que as estatísticas do Resource Governor foram redefinidas. No Linux, essa estatística é proveniente do subsistema blkio, em que o valor na linha de leitura é blkio.throttle.io_serviced
total_cpu_kernel_ms O tempo do kernel do usuário da CPU cumulativo em milissegundos desde que as estatísticas do Resource Governor foram redefinidas. No Linux, essa estatística é proveniente do subsistema cpuacct, em que o valor na linha do usuário é cpuacct.stat
total_cpu_user_ms O tempo de do usuário da CPU cumulativo em milissegundos desde que as estatísticas do Resource Governor foram redefinidas. No Linux, essa estatística é proveniente do subsistema cpuacct, em que o valor no valor da linha do sistema é cpuacct.stat
active_processes_count O número de processos externos em execução no momento da solicitação. No Linux, essa estatística é proveniente do subsistema pids, em que o valor é pids.current