Início Rápido: Executar imagens de contêiner do SQL Server Linux com o Docker
Aplica-se a: SQL Server – Linux
Neste início rápido, você usa o Docker para efetuar pull e executar a imagem de contêiner do SQL Server 2017 (14.x) Linux, mssql-server-linux. Em seguida, você pode se conectar ao sqlcmd para criar seu primeiro banco de dados e executar consultas.
Para obter mais informações sobre plataformas com suporte, confira as Notas sobre a versão do SQL Server 2017 no Linux.
Aviso
Ao parar e remover um contêiner, seus dados do SQL Server são permanentemente excluídos. Para mais informações sobre como preservar os seus dados, crie e copie um arquivo de backup fora do contêiner ou use uma técnica de persistência de dados do contêiner.
Este início rápido cria contêineres do SQL Server 2017 (14.x). Se você preferir criar contêineres do Linux para versões diferentes do SQL Server, consulte as versões deste artigo para SQL Server 2019 (15.x) ou SQL Server 2022 (16.x).
Neste início rápido, você usa o Docker para efetuar pull e executar a imagem de contêiner do SQL Server 2019 (15.x) Linux, mssql-server-linux. Em seguida, você pode se conectar ao sqlcmd para criar seu primeiro banco de dados e executar consultas.
Para obter mais informações sobre plataformas com suporte, confira as Notas sobre a versão do SQL Server 2019 no Linux.
Aviso
Ao parar e remover um contêiner, seus dados do SQL Server são permanentemente excluídos. Para mais informações sobre como preservar os seus dados, crie e copie um arquivo de backup fora do contêiner ou use uma técnica de persistência de dados do contêiner.
Este início rápido cria contêineres do SQL Server 2019 (15.x). Se você preferir criar contêineres do Linux para versões diferentes do SQL Server, consulte as versões SQL Server 2017 (14.x) ou SQL Server 2022 (16.x) deste artigo.
Neste início rápido, você usa o Docker para efetuar pull e executar a imagem de contêiner do SQL Server 2022 (16.x) Linux, mssql-server-linux. Em seguida, você pode se conectar ao sqlcmd para criar seu primeiro banco de dados e executar consultas.
Para obter mais informações sobre as plataformas compatíveis, confira as Notas sobre a versão do SQL Server 2022 no Linux.
Aviso
Ao parar e remover um contêiner, seus dados do SQL Server são permanentemente excluídos. Para mais informações sobre como preservar os seus dados, crie e copie um arquivo de backup fora do contêiner ou use uma técnica de persistência de dados do contêiner.
Este início rápido cria contêineres do SQL Server 2022 (16.x). Se você preferir criar contêineres do Linux para versões diferentes do SQL Server, consulte as versões SQL Server 2017 (14.x) ou SQL Server 2019 (15.x) deste artigo.
Essa imagem consiste no SQL Server em execução no Linux, com base no Ubuntu. Ela pode ser usada com o Docker Engine 1.8 ou superior no Linux.
Começando no SQL Server 2022 (16.x) CU 14 e no SQL Server 2019 (15.x) CU 28, as imagens de contêiner incluem o novo pacote mssql-tools18. O antigo diretório /opt/mssql-tools/bin
está sendo desativado. O novo diretório para as ferramentas do Microsoft ODBC 18 é /opt/mssql-tools18/bin
, alinhando-se com a oferta de ferramentas mais recente. Para obter mais informações sobre as alterações e os aprimoramentos de segurança, consulte Lançamento do driver ODBC 18.0 para SQL Server.
Os exemplos neste artigo usam o comando docker
. No entanto, a maioria desses comandos também funciona com o Podman. O Podman fornece uma interface de linha de comando semelhante ao Docker Engine. Você pode saber mais sobre o Podman aqui.
Importante
No momento, o sqlcmd não oferece suporte ao parâmetro MSSQL_PID
ao criar contêineres. Se usar as instruções sqlcmd neste guia de início rápido, você cria um contêiner com a edição Developer do SQL Server. Use as instruções da interface de linha de comando (CLI) para criar um contêiner usando a licença de sua escolha. Para obter mais informações, consulte Implantar contêineres do SQL Server no Linux e conectar-se a eles.
Pré-requisitos
- O Docker Engine 1.8 ou superior em qualquer distribuição do Linux com suporte. Para obter mais informações, veja Install Docker (Instalar o Docker).
- Para obter mais informações sobre os requisitos de hardware e o suporte do processador, confira o artigo SQL Server 2016 e 2017: requisitos de hardware e software
- Para obter mais informações sobre os requisitos de hardware e o suporte do processador, confira o artigo SQL Server 2019: requisitos de hardware e software
- Para obter mais informações sobre os requisitos de hardware e o suporte do processador, confira o artigo SQL Server 2022: requisitos de hardware e software
Driver de armazenamento
overlay2
do Docker. Esse driver é o padrão para a maioria dos usuários. Se você não estiver usando esse provedor de armazenamento e precisar alterá-lo, confira as instruções e os avisos na documentação do Docker para configurar o overlay2.Instale o sqlcmd mais recente no host do Docker.
Pelo menos 2 GB de espaço em disco.
Pelo menos 2 GB de RAM.
Efetuar pull e executar a imagem de contêiner do SQL Server Linux
Antes de iniciar as etapas a seguir, verifique se selecionou seu shell preferencial (bash, PowerShell ou cmd) na parte superior deste artigo.
Para os comandos de Bash neste artigo, sudo
é usado. Se não quiser usar sudo
para executar o Docker, você poderá configurar um grupo do docker
e adicionar usuários a ele. Para obter mais informações, veja Etapas de pós-instalação para o Linux.
Extrair o contêiner do registro
Efetue pull da imagem de contêiner do SQL Server 2017 (14.x) Linux no Microsoft Container Registry.
sudo docker pull mcr.microsoft.com/mssql/server:2017-latest
docker pull mcr.microsoft.com/mssql/server:2017-latest
docker pull mcr.microsoft.com/mssql/server:2017-latest
Este início rápido cria contêineres do SQL Server 2017 (14.x). Se você preferir criar contêineres do Linux para versões diferentes do SQL Server, consulte as versões SQL Server 2019 (15.x) ou SQL Server 2022 (16.x) deste artigo.
O comando anterior efetua pull da imagem de contêiner mais recente do SQL Server 2017 (14.x) Linux. Se você quiser efetuar pull de uma imagem específica, adicione dois-pontos e o nome da marca, como mcr.microsoft.com/mssql/server:2017-GA-ubuntu
. Para ver todas as imagens disponíveis, consulte o Registro de Artefato da Microsoft.
Executar o contêiner
Para executar a imagem de contêiner do Linux com o Docker, você pode usar o comando a seguir em um shell de bash ou no prompt de comando com privilégios elevados do PowerShell.
Importante
A variável de ambiente SA_PASSWORD
foi preterida. Use MSSQL_SA_PASSWORD
em vez disso.
sudo docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2017-latest
Se você estiver usando o PowerShell Core, substitua as aspas duplas por aspas simples.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2017-latest
A senha deverá seguir a política de senha padrão do SQL Server, caso contrário, o contêiner não poderá configurar o SQL Server e deixará de funcionar. 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. É possível examinar o log de erros usando o comando docker logs
.
Por padrão, esse início rápido cria um contêiner com a edição Developer do SQL Server. O processo para executar edições de produção em contêineres é um pouco diferente. Para obter mais informações, veja Executar imagens de contêiner de produção.
A tabela a seguir fornece uma descrição dos parâmetros no exemplo de docker run
anterior:
Parâmetro | Descrição |
---|---|
-e "ACCEPT_EULA=Y" |
Defina a variável ACCEPT_EULA com qualquer valor para confirmar sua aceitação do Contrato de Licença do Usuário Final. Configuração exigida para a imagem do SQL Server. |
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" |
Especifique sua própria senha forte que tenha pelo menos oito caracteres e atenda à Política de senha. Configuração exigida para a imagem do SQL Server. |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
Especifique uma ordenação personalizada do SQL Server, em vez do padrão SQL_Latin1_General_CP1_CI_AS . |
-p 1433:1433 |
Mapeie uma porta TCP no ambiente do host (primeiro valor) para uma porta TCP no contêiner (segundo valor). Neste exemplo, o SQL Server está escutando na TCP 1433 no contêiner e essa porta de contêiner é exposta para a porta TCP 1433 no host. |
--name sql1 |
Especifique um nome personalizado para o contêiner em vez de um nome gerado aleatoriamente. Se você executar mais de um contêiner, não será possível reutilizar esse mesmo nome. |
--hostname sql1 |
Usado para definir explicitamente o nome do host do contêiner. Se você não especificar o nome do host, o padrão será a ID do contêiner, que é um GUID do sistema gerado aleatoriamente. |
-d |
Execute o contêiner em segundo plano (daemon). |
mcr.microsoft.com/mssql/server:2017-latest |
A imagem de contêiner do SQL Server Linux. |
Exibir lista de contêineres
Para exibir seus contêineres do Docker, use o comando
docker ps
.sudo docker ps -a
docker ps -a
docker ps -a
Você deverá ver uma saída semelhante ao seguinte exemplo:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4a1999ef83e mcr.microsoft.com/mssql/server:2017-latest "/opt/mssql/bin/perm..." 2 minutes ago Up 2 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp sql1
Se a coluna
STATUS
mostrar o statusUp
, o SQL Server estará em execução no contêiner e será escutado na porta especificada na colunaPORTS
. Se a colunaSTATUS
do contêiner do SQL Server mostrarExited
, confira Solução de problemas de contêineres do SQL Server no Docker. O servidor estará pronto para conexão quando os logs de erros do SQL Server exibirem a mensagem:SQL Server is now ready for client connections. This is an informational message; no user action is required
. Você pode examinar o log de erros do SQL Server dentro do contêiner usando o comando:sudo docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
O parâmetro
--hostname
, conforme já discutido, altera o nome interno do contêiner para um valor personalizado. Esse valor é o nome retornado na seguinte consulta Transact-SQL:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');
Configurar
--hostname
e--name
com o mesmo valor é uma boa maneira de identificar facilmente o contêiner de destino.Como etapa final, altere sua senha SA em um ambiente de produção porque
MSSQL_SA_PASSWORD
está visível na saídaps -eax
e armazenada na variável de ambiente de mesmo nome.
Efetuar pull e executar a imagem de contêiner do SQL Server Linux
Antes de iniciar as etapas a seguir, verifique se selecionou seu shell preferencial (bash, PowerShell ou cmd) na parte superior deste artigo.
Para os comandos de Bash neste artigo, sudo
é usado. Se não quiser usar sudo
para executar o Docker, você poderá configurar um grupo do docker
e adicionar usuários a ele. Para obter mais informações, veja Etapas de pós-instalação para o Linux.
Extrair o contêiner do registro
Efetue pull da imagem de contêiner do SQL Server 2019 (15.x) Linux no Microsoft Container Registry.
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker pull mcr.microsoft.com/mssql/server:2019-latest
docker pull mcr.microsoft.com/mssql/server:2019-latest
Este início rápido cria contêineres do SQL Server 2019 (15.x). Se você preferir criar contêineres do Linux para versões diferentes do SQL Server, consulte as versões SQL Server 2017 (14.x) ou SQL Server 2022 (16.x) deste artigo.
O comando anterior efetua pull da imagem de contêiner mais recente do SQL Server 2019 (15.x) Linux. Se você quiser efetuar pull de uma imagem específica, adicione dois-pontos e o nome da marca, como mcr.microsoft.com/mssql/server:2019-GA-ubuntu
. Para ver todas as imagens disponíveis, consulte o Registro de Artefato da Microsoft.
Executar o contêiner
Para executar a imagem de contêiner do Linux com o Docker, você pode usar o comando a seguir em um shell de bash ou no prompt de comando com privilégios elevados do PowerShell.
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=<YourStrong@Passw0rd>" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2019-latest
Se você estiver usando o PowerShell Core, substitua as aspas duplas por aspas simples.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2019-latest
A senha deverá seguir a política de senha padrão do SQL Server, caso contrário, o contêiner não poderá configurar o SQL Server e deixará de funcionar. 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. É possível examinar o log de erros usando o comando docker logs
.
Por padrão, esse início rápido cria um contêiner com a edição Developer do SQL Server. O processo para executar edições de produção em contêineres é um pouco diferente. Para obter mais informações, veja Executar imagens de contêiner de produção.
A tabela a seguir fornece uma descrição dos parâmetros no exemplo de docker run
anterior:
Parâmetro | Descrição |
---|---|
-e "ACCEPT_EULA=Y" |
Defina a variável ACCEPT_EULA com qualquer valor para confirmar sua aceitação do Contrato de Licença do Usuário Final. Configuração exigida para a imagem do SQL Server. |
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" |
Especifique sua própria senha forte que tenha pelo menos oito caracteres e atenda à Política de senha. Configuração exigida para a imagem do SQL Server. |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
Especifique uma ordenação personalizada do SQL Server, em vez do padrão SQL_Latin1_General_CP1_CI_AS . |
-p 1433:1433 |
Mapeie uma porta TCP no ambiente do host (primeiro valor) para uma porta TCP no contêiner (segundo valor). Neste exemplo, o SQL Server está escutando na TCP 1433 no contêiner e essa porta de contêiner é exposta para a porta TCP 1433 no host. |
--name sql1 |
Especifique um nome personalizado para o contêiner em vez de um nome gerado aleatoriamente. Se você executar mais de um contêiner, não será possível reutilizar esse mesmo nome. |
--hostname sql1 |
Usado para definir explicitamente o nome do host do contêiner. Se você não especificar o nome do host, o padrão será a ID do contêiner, que é um GUID do sistema gerado aleatoriamente. |
-d |
Execute o contêiner em segundo plano (daemon). |
mcr.microsoft.com/mssql/server:2019-latest |
A imagem de contêiner do SQL Server Linux. |
Exibir lista de contêineres
Para exibir seus contêineres do Docker, use o comando
docker ps
.docker ps -a
docker ps -a
docker ps -a
Você deverá ver uma saída semelhante ao seguinte exemplo:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4a1999ef83e mcr.microsoft.com/mssql/server:2019-latest "/opt/mssql/bin/perm..." 2 minutes ago Up 2 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp sql1
Se a coluna
STATUS
mostrar o statusUp
, o SQL Server estará em execução no contêiner e será escutado na porta especificada na colunaPORTS
. Se a colunaSTATUS
do contêiner do SQL Server mostrarExited
, confira Solução de problemas de contêineres do SQL Server no Docker. O servidor estará pronto para conexão quando os logs de erros do SQL Server exibirem a mensagem:SQL Server is now ready for client connections. This is an informational message; no user action is required
. Você pode examinar o log de erros do SQL Server dentro do contêiner usando o comando:docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
O parâmetro
--hostname
, conforme já discutido, altera o nome interno do contêiner para um valor personalizado. Esse valor é o nome retornado na seguinte consulta Transact-SQL:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');
Configurar
--hostname
e--name
com o mesmo valor é uma boa maneira de identificar facilmente o contêiner de destino.Como etapa final, altere sua senha SA em um ambiente de produção porque
MSSQL_SA_PASSWORD
está visível na saídaps -eax
e armazenada na variável de ambiente de mesmo nome.
Efetuar pull e executar a imagem de contêiner do SQL Server Linux
Antes de iniciar as etapas a seguir, verifique se selecionou seu shell preferencial (bash, PowerShell ou cmd) na parte superior deste artigo.
Para os comandos de Bash neste artigo, sudo
é usado. Se não quiser usar sudo
para executar o Docker, você poderá configurar um grupo do docker
e adicionar usuários a ele. Para obter mais informações, veja Etapas de pós-instalação para o Linux.
Extrair o contêiner do registro
Efetue pull da imagem de contêiner do SQL Server 2022 (16.x) Linux no Registro de Contêiner da Microsoft.
docker pull mcr.microsoft.com/mssql/server:2022-latest
docker pull mcr.microsoft.com/mssql/server:2022-latest
docker pull mcr.microsoft.com/mssql/server:2022-latest
Este início rápido cria contêineres do SQL Server 2022 (16.x). Se você preferir criar contêineres do Linux para versões diferentes do SQL Server, consulte as versões SQL Server 2017 (14.x) ou SQL Server 2019 (15.x) deste artigo.
O comando anterior efetua pull da imagem de contêiner mais recente do SQL Server 2022 (16.x) Linux. Se você quiser efetuar pull de uma imagem específica, adicione dois-pontos e o nome da marca, como mcr.microsoft.com/mssql/server:2022-GA-ubuntu
. Para ver todas as imagens disponíveis, consulte o Registro de Artefato da Microsoft.
Executar o contêiner
Para executar a imagem de contêiner do Linux com o Docker, você pode usar o comando a seguir em um shell de bash ou no prompt de comando com privilégios elevados do PowerShell.
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=<YourStrong@Passw0rd>" \
-p 1433:1433 --name sql1 --hostname sql1 \
-d \
mcr.microsoft.com/mssql/server:2022-latest
Se você estiver usando o PowerShell Core, substitua as aspas duplas por aspas simples.
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" `
-p 1433:1433 --name sql1 --hostname sql1 `
-d `
mcr.microsoft.com/mssql/server:2022-latest
A senha deverá seguir a política de senha padrão do SQL Server, caso contrário, o contêiner não poderá configurar o SQL Server e deixará de funcionar. 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. É possível examinar o log de erros usando o comando docker logs
.
Por padrão, esse início rápido cria um contêiner com a edição Developer do SQL Server. O processo para executar edições de produção em contêineres é um pouco diferente. Para obter mais informações, veja Executar imagens de contêiner de produção.
A tabela a seguir fornece uma descrição dos parâmetros no exemplo de docker run
anterior:
Parâmetro | Descrição |
---|---|
-e "ACCEPT_EULA=Y" |
Defina a variável ACCEPT_EULA com qualquer valor para confirmar sua aceitação do Contrato de Licença do Usuário Final. Configuração exigida para a imagem do SQL Server. |
-e "MSSQL_SA_PASSWORD=<YourStrong@Passw0rd>" |
Especifique sua própria senha forte que tenha pelo menos oito caracteres e atenda à Política de senha. Configuração exigida para a imagem do SQL Server. |
-e "MSSQL_COLLATION=<SQL_Server_collation>" |
Especifique uma ordenação personalizada do SQL Server, em vez do padrão SQL_Latin1_General_CP1_CI_AS . |
-p 1433:1433 |
Mapeie uma porta TCP no ambiente do host (primeiro valor) para uma porta TCP no contêiner (segundo valor). Neste exemplo, o SQL Server está escutando na TCP 1433 no contêiner e essa porta de contêiner é exposta para a porta TCP 1433 no host. |
--name sql1 |
Especifique um nome personalizado para o contêiner em vez de um nome gerado aleatoriamente. Se você executar mais de um contêiner, não será possível reutilizar esse mesmo nome. |
--hostname sql1 |
Usado para definir explicitamente o nome do host do contêiner. Se você não especificar o nome do host, o padrão será a ID do contêiner, que é um GUID do sistema gerado aleatoriamente. |
-d |
Execute o contêiner em segundo plano (daemon). |
mcr.microsoft.com/mssql/server:2022-latest |
A imagem de contêiner do SQL Server Linux. |
Alterar a senha do administrador do sistema
A conta SA é um administrador do sistema na instância do SQL Server que é criada durante a instalação. Depois de criar o contêiner do SQL Server, a variável de ambiente MSSQL_SA_PASSWORD
especificada é detectável executando echo $MSSQL_SA_PASSWORD
no contêiner. Para fins de segurança, você deve alterar sua senha SA em um ambiente de produção.
Escolha uma senha forte para usar no usuário de SA.
Use
docker exec
para executar sqlcmd para alterar a senha usando o Transact-SQL. No exemplo a seguir, as senhas novas e antigas são lidas da entrada de usuário.docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd \ -S localhost -U SA \ -P "$(read -sp "Enter current SA password: "; echo "${REPLY}")" \ -Q "ALTER LOGIN SA WITH PASSWORD=\"$(read -sp "Enter new SA password: "; echo "${REPLY}")\""
docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd ` -S localhost -U SA -P "<YourStrong@Passw0rd>" ` -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd ` -S localhost -U SA -P "<YourStrong@Passw0rd>" ` -Q "ALTER LOGIN SA WITH PASSWORD='<YourNewStrong@Passw0rd>'"
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.
Desativar a conta sa
como melhor prática
Importante
Você precisará dessas credenciais em etapas posteriores. Anote a ID de usuário e a senha que você digita aqui.
Quando você se conecta à instância do SQL Server usando a conta sa
pela primeira vez após a instalação, é importante seguir estas etapas e, em seguida, desabilitar imediatamente o logon de sa
como uma melhor prática de segurança.
Crie um novo logon e torne-o um membro da função de servidor sysadmin.
Dependendo se você tem uma implantação de contêiner ou não contêiner, habilite a autenticação do Windows, crie um novo logon baseado no Windows e adicione-o à função de servidor sysadmin.
Do contrário, crie um logon usando a autenticação do SQL Server e adicione-o à função de servidor sysadmin.
Conecte-se à instância do SQL Server usando o novo logon que você criou.
Desative a conta
sa
, conforme recomendado para as melhores práticas de segurança.
Exibir lista de contêineres
Para exibir seus contêineres do Docker, use o comando
docker ps
.docker ps -a
docker ps -a
docker ps -a
Você deverá ver uma saída semelhante ao seguinte exemplo:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4a1999ef83e mcr.microsoft.com/mssql/server:2022-latest "/opt/mssql/bin/perm..." 2 minutes ago Up 2 minutes 0.0.0.0:1433->1433/tcp, :::1433->1433/tcp sql1
Se a coluna
STATUS
mostrar o statusUp
, o SQL Server estará em execução no contêiner e será escutado na porta especificada na colunaPORTS
. Se a colunaSTATUS
do contêiner do SQL Server mostrarExited
, confira Solução de problemas de contêineres do SQL Server no Docker. O servidor estará pronto para conexão quando os logs de erros do SQL Server exibirem a mensagem:SQL Server is now ready for client connections. This is an informational message; no user action is required
. Você pode examinar o log de erros do SQL Server dentro do contêiner usando o comando:docker exec -t sql1 cat /var/opt/mssql/log/errorlog | grep connection
O parâmetro
--hostname
, conforme já discutido, altera o nome interno do contêiner para um valor personalizado. Esse valor é o nome retornado na seguinte consulta Transact-SQL:SELECT @@SERVERNAME, SERVERPROPERTY('ComputerNamePhysicalNetBIOS'), SERVERPROPERTY('MachineName'), SERVERPROPERTY('ServerName');
Configurar
--hostname
e--name
com o mesmo valor é uma boa maneira de identificar facilmente o contêiner de destino.
Conecte-se ao SQL Server
As etapas a seguir usam a ferramenta de linha de comando do SQL Server, sqlcmd utility, dentro do contêiner para se conectar ao SQL Server.
Use o comando
docker exec -it
para iniciar um shell bash interativo dentro do contêiner em execução. No exemplo a seguir,sql1
é o nome especificado pelo parâmetro--name
na criação do contêiner.docker exec -it sql1 "bash"
docker exec -it sql1 "bash"
docker exec -it sql1 "bash"
Uma vez dentro do contêiner, conecte-se localmente com o sqlcmd usando o caminho completo.
/opt/mssql-tools/bin/sqlcmd -S localhost -U <userid> -P "<YourNewStrong@Passw0rd>"
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.É possível omitir a senha na linha de comando para receber uma solicitação para inseri-la. Por exemplo:
/opt/mssql-tools/bin/sqlcmd -S localhost -U <userid>
Uma vez dentro do contêiner, conecte-se localmente com o sqlcmd usando o caminho completo.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<YourNewStrong@Passw0rd>"
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.É possível omitir a senha na linha de comando para receber uma solicitação para inseri-la. Por exemplo:
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
Uma vez dentro do contêiner, conecte-se localmente com o sqlcmd usando o caminho completo.
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid> -P "<YourNewStrong@Passw0rd>"
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.É possível omitir a senha na linha de comando para receber uma solicitação para inseri-la. Por exemplo:
/opt/mssql-tools18/bin/sqlcmd -S localhost -U <userid>
- Se isso funcionar, você será levado a um prompt de comando sqlcmd:
1>
.
Criar e consultar dados
As seções a seguir descrevem como usar o sqlcmd e o Transact-SQL para criar um banco de dados, adicionar dados e executar uma consulta.
Criar um novo banco de dados
As etapas a seguir criam um novo banco de dados denominado TestDB
.
No prompt de comando sqlcmd, cole o seguinte comando Transact-SQL para criar um banco de dados de teste:
CREATE DATABASE TestDB;
Na próxima linha, grave uma consulta para retornar o nome de todos os bancos de dados do servidor:
SELECT Name from sys.databases;
Os dois comandos anteriores não foram executados imediatamente. Digite
GO
em uma nova linha para executar os comandos anteriores:GO
Inserir dados
Em seguida, crie uma nova tabela, Inventory
, e insira duas novas linhas.
No prompt de comando sqlcmd, altere o contexto para o novo banco de dados
TestDB
:USE TestDB;
Criar nova tabela denominada
Inventory
:CREATE TABLE Inventory (id INT, name NVARCHAR(50), quantity INT);
Inserir dados na nova tabela:
INSERT INTO Inventory VALUES (1, 'banana', 150); INSERT INTO Inventory VALUES (2, 'orange', 154);
Digite
GO
para executar os comandos anteriores:GO
Selecionar dados
Agora, execute uma consulta para retornar da tabela Inventory
.
No prompt de comando sqlcmd, digite uma consulta que retorna linhas de tabela
Inventory
em que a quantidade é maior que 152:SELECT * FROM Inventory WHERE quantity > 152;
Execute o comando:
GO
Saia do prompt de comando sqlcmd
Para encerrar a sessão sqlcmd, digite
QUIT
:QUIT
Para sair do prompt de comando interativo no contêiner, digite
exit
. O contêiner continuará a ser executado depois que você sair do shell bash interativo.
Conectar-se de fora do contêiner
Você também pode se conectar à instância do SQL Server em seu computador do Docker usando qualquer ferramenta externa do macOS, do Windows ou do Linux que seja compatível com conexões SQL. A ferramenta externa usa o endereço IP do computador host.
As etapas a seguir usam a sqlcmd fora do contêiner para conectar-se ao SQL Server em execução no contêiner. Essas etapas consideram que as ferramentas de linha de comando do SQL Server já estejam instaladas fora do contêiner. Os mesmos princípios são aplicados ao usar outras ferramentas, mas o processo de conexão é exclusivo de cada ferramenta.
Encontre o endereço IP do computador host do contêiner usando
ifconfig
ouip addr
.Para este exemplo, instale a ferramenta sqlcmd no computador cliente. Para obter mais informações, confira sqlcmd utility ou Instalar as ferramentas de linha de comando sqlcmd e bcp do SQL Server no Linux.
Execute sqlcmd especificando o endereço IP e a porta mapeada para a porta 1433 no seu contêiner. Neste exemplo, é a mesma porta 1433 no computador host. Se você especificou uma porta mapeada diferente no computador host, você a usaria aqui. Você também precisa abrir a porta de entrada apropriada no firewall para permitir a conexão.
As versões mais recentes do sqlcmd são seguras por padrão. Se a conexão não for bem-sucedida e você tiver usando a versão 18 ou superior, você poderá adicionar a opção
-No
ao sqlcmd para especificar que a criptografia é opcional, não obrigatória.sudo sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
sqlcmd -S <ip_address>,1433 -U <userid> -P "<YourNewStrong@Passw0rd>"
Execute comandos Transact-SQL. Quando terminar, digite
QUIT
.
Outras ferramentas comuns para conectar-se ao SQL Server incluem:
- Extensão do SQL Server para Visual Studio Code
- Usar o SQL Server Management Studio no Windows para gerenciar o SQL Server no Linux
- O que é o Azure Data Studio?
- mssql-cli (versão prévia)
- Gerenciar o SQL Server no Linux com o PowerShell Core
Remover o contêiner
Se você quiser remover o contêiner do SQL Server usado neste tutorial, execute os seguintes comandos:
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
docker stop sql1
docker rm sql1
Demonstração do Docker
Depois de terminar de usar a imagem de contêiner do SQL Server Linux para Docker, é interessante saber como o Docker é usado para aprimorar o desenvolvimento e o teste. O vídeo a seguir mostra como o Docker pode ser usado em um cenário de implantação e integração contínuas.
Tarefas relacionadas
Conteúdo relacionado
- Restaurar um banco de dados SQL Server em um contêiner do Linux
- Solução de problemas de contêineres do SQL Server no Docker
- repositório mssql-docker do GitHub
Contribua com a documentação do SQL
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