Eventos
31 de mar., 23 - 2 de abr., 23
O maior evento de aprendizado de SQL, Fabric e Power BI. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $ 400.
Registre-se hoje mesmoNão há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Aplica-se a:SQL Server – Linux
Este artigo explica como implantar contêineres do SQL Server no Linux e se conectar a eles.
Para ver outros cenários de implantação, confira:
Observação
Este artigo concentra-se especificamente no uso da imagem mssql-server-linux
. As implantações do SQL Server implantações em contêineres Windows não são cobertas pelo suporte. Para desenvolvimento e teste, você pode criar suas próprias imagens de contêiner personalizadas para trabalhar com o SQL Server em contêineres de Windows. Arquivos de amostra estão disponíveis no GitHub. Arquivos de exemplo são apenas para referência.
Importante
Antes de optar por executar um contêiner do SQL Server para casos de uso de produção, examine a política de suporte técnico do para o Microsoft SQL Server para garantir que você esteja executando em uma configuração com suporte.
Este vídeo de 6 minutos fornece uma introdução à execução do SQL Server em contêineres:
Para efetuar pull e executar as imagens de contêiner do Docker para SQL Server, siga os pré-requisitos e as etapas no seguinte início rápido:
Este artigo de configuração apresenta cenários de uso adicionais nas seções a seguir.
Você pode se conectar e consultar o SQL Server em um contêiner de fora ou de dentro do contêiner. As seções a seguir explicam os dois cenários.
Você pode se conectar à instância do SQL Server em seu host de contêiner usando qualquer ferramenta externa do macOS, do Windows ou do Linux que seja compatível com conexões SQL. Algumas ferramentas comuns incluem:
O exemplo a seguir usa o sqlcmd para conectar-se ao SQL Server em execução em um contêiner. O endereço IP na cadeia de conexão é o endereço IP do computador host que está executando o contêiner.
Observação
As versões mais recentes do sqlcmd (em mssql-tools18) são seguras por padrão. Se estiver usando a versão 18 ou superior, você precisará adicionar a opção No
ao sqlcmd para especificar que a criptografia é opcional, não obrigatória.
sqlcmd -S 10.3.2.4 -U sa -P '<YourPassword>'
sqlcmd -S 10.3.2.4 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4 -U sa -P "<YourPassword>"
Se você tiver mapeado uma porta de host que não era a porta padrão 1433
, adicione essa porta à cadeia de conexão. Por exemplo, se você especificar -p 1400:1433
em seu comando docker run
, conecte-se explicitamente especificando a porta 1400.
sqlcmd -S 10.3.2.4,1400 -U sa -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1400 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1400 -U sa -P "<YourPassword>"
Do SQL Server 2017 (14.x), as ferramentas de linha de comando SQL Server são incluídas na imagem de contêiner. Se você anexar a imagem com um prompt de comando interativo, poderá executar as ferramentas localmente.
Use o comando docker exec -it
para iniciar um shell bash interativo dentro do contêiner em execução. No exemplo e69e056c702d
a seguir está é a ID do contêiner.
docker exec -it e69e056c702d "bash"
Dica
Você nem sempre precisa especificar toda a ID do contêiner. Você só precisa especificar caracteres suficientes para identificá-la exclusivamente. Portanto, neste exemplo, talvez seja suficiente usar e6
ou e69
, em vez da ID completa. Para descobrir a ID do contêiner, execute o comando docker ps -a
.
Uma vez dentro do contêiner, conecte-se localmente com o sqlcmd usando seu caminho completo.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U sa -P '<YourPassword>'
Observação
As versões mais recentes do sqlcmd são seguras por padrão. Para obter mais informações sobre a criptografia de conexão, confira Utilitário sqlcmd para Windows e Conectar com sqlcmd para Linux e macOS. Se a conexão não for bem-sucedida, você poderá adicionar a opção -No
ao sqlcmd para especificar que a criptografia é opcional, não obrigatória.
Quando terminar com o sqlcmd, digite exit
.
Quando terminar com o prompt de comando interativo, digite exit
. O contêiner continuará a ser executado depois que você sair do shell bash interativo.
Se você quiser saber a versão do SQL Server em um contêiner em execução, use o comando a seguir para exibi-la. Substitua <Container ID or name>
pela ID ou pelo nome do contêiner de destino. Substitua <password>
pela senha do SQL Server para a conta do administrador do sistema (sa
).
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd \
-S localhost -U sa -P '<password>' \
-Q 'SELECT @@VERSION'
Observação
As versões mais recentes do sqlcmd são seguras por padrão. Para obter mais informações sobre a criptografia de conexão, confira Utilitário sqlcmd para Windows e Conectar com sqlcmd para Linux e macOS. Se a conexão não for bem-sucedida, você poderá adicionar a opção -No
ao sqlcmd para especificar que a criptografia é opcional, não obrigatória.
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd `
-S localhost -U sa -P "<password>" `
-Q "SELECT @@VERSION"
Observação
As versões mais recentes do sqlcmd são seguras por padrão. Para obter mais informações sobre a criptografia de conexão, confira Utilitário sqlcmd para Windows e Conectar com sqlcmd para Linux e macOS. Se a conexão não for bem-sucedida, você poderá adicionar a opção -No
ao sqlcmd para especificar que a criptografia é opcional, não obrigatória.
docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd ^
-S localhost -U sa -P "<password>" ^
-Q "SELECT @@VERSION"
Observação
As versões mais recentes do sqlcmd são seguras por padrão. Para obter mais informações sobre a criptografia de conexão, confira Utilitário sqlcmd para Windows e Conectar com sqlcmd para Linux e macOS. Se a conexão não for bem-sucedida, você poderá adicionar a opção -No
ao sqlcmd para especificar que a criptografia é opcional, não obrigatória.
Você também pode identificar a versão e o número de build do SQL Server para uma imagem de contêiner de destino. O comando a seguir exibe a versão do SQL Server e as informações de build da imagem mcr.microsoft.com/mssql/server:2022-latest
. Ele faz isso executando um novo contêiner com uma variável de ambiente PAL_PROGRAM_INFO=1
. O contêiner resultante é fechado instantaneamente e o comando docker rm
o remove.
docker run -e PAL_PROGRAM_INFO=1 --name sqlver \
-ti mcr.microsoft.com/mssql/server:2022-latest && \
docker rm sqlver
docker run -e PAL_PROGRAM_INFO=1 --name sqlver `
-ti mcr.microsoft.com/mssql/server:2022-latest; `
docker rm sqlver
docker run -e PAL_PROGRAM_INFO=1 --name sqlver ^
-ti mcr.microsoft.com/mssql/server:2022-latest && ^
docker rm sqlver
Os comandos anteriores exibem informações de versão semelhantes à seguinte saída:
sqlservr
Version 16.0.1000.6
Build ID d81e9b6de06534e649bd57dd609aa3050f5e380f361b7f8a80a80eeb71e7422c
Build Type release
Git Version 2aede92f
Built at Tue Nov 01 06:11:40 GMT 2022
PAL
Build ID 754097e8f0db68f559e1cbc9d46952ac9fd518b5da9f12964ef40fc9033720e3
Build Type release
Git Version d88e3e1130
Built at Tue Nov 01 06:08:02 GMT 2022
Packages
system.security mssql-16.0.1000.6_26_official-release
system.certificates mssql-16.0.1000.6_26_official-release
sqlagent 16.0.1000.6
system.wmi 10.0.17763.2061.202107231
system.netfx 4.7.0.0.202104262
system mssql-16.0.1000.6_26_official-release
system.common 10.0.17763.2061.202107231
sqlservr 16.0.1000.6
secforwarderxplat 16.0.1000.6
Observação
Há cenários em que você talvez não queira usar a imagem de contêiner do SQL Server mais recente. Para executar uma imagem de contêiner do SQL Server específica, use as seguintes etapas:
Identifique a tag
do Docker para a versão que você deseja usar. Para ver todas as tags disponíveis, consulte o Registro de Artefato da Microsoft.
Efetue pull da imagem de contêiner do SQL Server com a tag. Por exemplo, para efetuar pull da imagem 2019-CU18-ubuntu-20.04
, substitua <image_tag>
no comando a seguir por 2019-CU18-ubuntu-20.04
.
docker pull mcr.microsoft.com/mssql/server:<image_tag>
Para executar um novo contêiner com essa imagem, especifique o nome da tag no comando docker run
. No comando a seguir, substitua <image_tag>
pela versão que você deseja executar. Sua senha deve seguir a política de senha padrão do SQL Server. Por padrão, a senha precisa ter pelo menos oito caracteres e conter caracteres de três dos seguintes quatro conjuntos: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As senhas podem ter até 128 caracteres. Use senhas longas e complexas.
Importante
A variável de ambiente SA_PASSWORD
foi preterida. Use MSSQL_SA_PASSWORD
em vez disso.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
Essas etapas também podem ser usadas para fazer downgrade de um contêiner existente. Por exemplo, talvez você queira reverter ou fazer downgrade de um contêiner em execução para solução de problemas ou teste. Para fazer downgrade de um contêiner em execução, você deve estar usando uma técnica de persistência para a pasta de dados. Siga as mesmas etapas descritas na seção de atualização, mas especifique o nome da tag da versão mais antiga ao executar o novo contêiner.
A documentação para as imagens de contêiner do SQL Server Linux apontam para contêineres baseados em Ubuntu. Do SQL Server 2019 (15.x) em diante, você pode usar contêineres com base em RHEL (Red Hat Enterprise Linux). Um exemplo da imagem para RHEL será semelhante a mcr.microsoft.com/mssql/rhel/server:2019-CU15-rhel-8
.
Por exemplo, o seguinte comando efetua pull da Atualização Cumulativa 18 do contêiner do SQL Server 2019 (15.x) que usa o RHEL 8:
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
O guia de início rápido da seção anterior executa a edição Developer gratuita do SQL Server no Registro de Artefato da Microsoft. A maioria das informações ainda se aplica se você deseja executar imagens de contêiner de produção, como as edições Enterprise, Standard ou Web. No entanto, há algumas diferenças descritas aqui.
Você só poderá usar o SQL Server em um ambiente de produção se tiver uma licença válida. Você pode obter uma licença de produção do SQL Server Express gratuita aqui. As licenças do SQL Server Standard e do Enterprise Edition estão disponíveis por meio do Licenciamento por Volume da Microsoft.
A imagem de contêiner da edição Developer também pode ser configurada para executar as edições de produção.
Para executar uma edição de produção, examine os requisitos e execute os procedimentos do início rápido. Você deve especificar sua edição de produção com a variável de ambiente MSSQL_PID
. O exemplo a seguir mostra como executar a imagem de contêiner mais recente do SQL Server 2022 (16.x) para o Enterprise Core Edition.
Sua senha deve seguir a política de senha padrão do SQL Server. Por padrão, a senha precisa ter pelo menos oito caracteres e conter caracteres de três dos seguintes quatro conjuntos: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As senhas podem ter até 128 caracteres. Use senhas longas e complexas.
docker run --name sqlenterprise \
-e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' \
-e 'MSSQL_PID=EnterpriseCore' -p 1433:1433 \
-d mcr.microsoft.com/mssql/server:2022-latest
docker run --name sqlenterprise `
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" `
-e "MSSQL_PID=EnterpriseCore" -p 1433:1433 `
-d "mcr.microsoft.com/mssql/server:2022-latest"
docker run --name sqlenterprise ^
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" ^
-e "MSSQL_PID=EnterpriseCore" -p 1433:1433 ^
-d "mcr.microsoft.com/mssql/server:2022-latest"
Importante
Ao passar o valor Y
para a variável de ambiente ACCEPT_EULA
e um valor de edição para MSSQL_PID
, você está expressando que tem uma licença válida e existente para a edição e a versão do SQL Server que você pretende usar. Você também concorda que o uso do software SQL Server em execução em uma imagem de contêiner será regido pelos termos da sua licença do SQL Server.
Para obter uma lista completa de valores possíveis para o MSSQL_PID
, confira Definir configurações do SQL Server com variáveis de ambiente no Linux.
O Docker fornece uma maneira de executar vários contêineres do SQL Server no mesmo computador host. Use essa abordagem para cenários que exigem várias instâncias do SQL Server no mesmo host. Cada contêiner deve expor-se em uma porta diferente.
O exemplo a seguir cria dois contêineres SQL Server 2017 (14.x) e os mapeia para as portas 1401
e 1402
no computador host.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
O exemplo a seguir cria dois contêineres SQL Server 2019 (15.x) e os mapeia para as portas 1401
e 1402
no computador host.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
O exemplo a seguir cria dois contêineres do SQL Server 2022 (16.x) e os mapeia nas portas 1401
e 1402
do computador host.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
Cuidado
Sua senha deve seguir a política de senha padrão do SQL Server. Por padrão, a senha precisa ter pelo menos oito caracteres e conter caracteres de três dos seguintes quatro conjuntos: letras maiúsculas, letras minúsculas, dígitos de base 10 e símbolos. As senhas podem ter até 128 caracteres. Use senhas longas e complexas.
Agora, há duas instâncias do SQL Server em execução em contêineres separados. Os clientes podem se conectar a cada instância do SQL Server usando o endereço IP do host do contêiner e o número da porta do contêiner.
Observação
As versões mais recentes do sqlcmd (em mssql-tools18) são seguras por padrão. Se estiver usando a versão 18 ou superior, você precisará adicionar a opção No
ao sqlcmd para especificar que a criptografia é opcional, não obrigatória.
sqlcmd -S 10.3.2.4,1401 -U sa -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1402 -U sa -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1402 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1402 -U sa -P "<YourPassword>"
Para atualizar a imagem de contêiner com o Docker, primeiro identifique a tag de versão para a atualização. Receba esta versão do Registro com o comando docker pull
:
docker pull mcr.microsoft.com/mssql/server:<image_tag>
Isso atualiza a imagem do SQL Server para os novos contêineres criados, mas não atualiza o SQL Server em nenhum contêiner em execução. Para fazer isso, você deve criar um novo contêiner com a imagem de contêiner mais recente do SQL Server e migrar os dados para esse novo contêiner.
Verifique se você está usando uma das técnicas de persistência de dados para o contêiner do SQL Server existente. Isso permite que você inicie um novo contêiner com os mesmos dados.
Interrompa o contêiner do SQL Server com o comando docker stop
.
Crie um novo contêiner do SQL Server com docker run
e especifique um diretório de host mapeado ou um contêiner de volume de dados. Use a tag específica para a atualização do SQL Server. O novo contêiner agora usa uma nova versão do SQL Server com os dados existentes do SQL Server.
Importante
Há suporte para a atualização apenas entre RC1, RC2 e GA no momento.
Verifique os bancos de dados e os dados no novo contêiner.
Opcionalmente, remova o contêiner antigo com docker rm
.
Você sabia que pode editar conteúdo do SQL por conta própria? Ao fazer isso, além de melhorar nossa documentação, você também será creditado como um colaborador da página.
Para obter mais informações, confira Como contribuir para a documentação do SQL Server
Eventos
31 de mar., 23 - 2 de abr., 23
O maior evento de aprendizado de SQL, Fabric e Power BI. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $ 400.
Registre-se hoje mesmoTreinamento
Certificação
Microsoft Certified: Azure Database Administrator Associate - Certifications
Administrar uma infraestrutura de banco de dados do SQL Server para bancos de dados relacionais de nuvem, locais e híbridos usando as ofertas de banco de dados relacional do Microsoft PaaS.