Instalando SQLServer no OpenSUSE

Mascote do LinuxPro conectando o cabo ao banco de dados, com o camaleão do openSUSE ao lado

Nota (2026): Texto original de abril de 2017, ainda no SQL Server vNext CTP 2.0 no OpenSUSE Leap 42.2, com o instalador sqlservr-setup e o repositório do SLES 12. O SQL Server para Linux saiu em GA no mesmo ano. Em 2026 o produto corrente é o SQL Server 2025 (17.x) — e a Microsoft tirou o SLES da matriz. OpenSUSE Leap nunca foi plataforma oficial. O caminho suportado no Leap é o container; nativo fica no SLES 15 (SQL Server 2022) ou no Ubuntu/RHEL (2025).

Em 2017 a Microsoft tinha acabado de soltar o SQL Server no Linux. O atalho da época era colar o .repo do SLES 12 no Leap 42.2 e rodar o setup. Nove anos depois o motor é o mesmo — T-SQL, porta 1433, usuário sa — mas o mapa de plataformas virou. Quem ainda tem Leap e quer SQL Server não instala o pacote RPM no host: sobe o container.

O que mudou desde o CTP

O SQL Server 2025 (17.x, GA em novembro de 2025, CU 8 em agosto de 2026) roda em produção nestas plataformas, sempre em x86-64, sistema de arquivos XFS ou ext4, mínimo de 2 GB de RAM:

  • RHEL 9 e 10
  • Ubuntu 22.04 e 24.04 (24.04 a partir do CU 1)
  • Docker Engine 1.8+ (imagem baseada em Ubuntu, só host Intel/AMD — sem Rosetta, sem QEMU)

SLES saiu do 2025. Instalações de 2017/2019/2022 no SLES continuam suportadas até o fim de vida daquela versão. SQL Server 2022 ainda instala no SLES 15 SP6. OpenSUSE Leap, Tumbleweed e Btrfs nunca entraram na matriz: o Leap usa Btrfs por padrão, e Btrfs não é suportado pelo motor.

O comando de configuração deixou de ser sqlservr-setup. Desde a GA é /opt/mssql/bin/mssql-conf setup. As ferramentas de linha de comando são o pacote mssql-tools18 in /opt/mssql-tools18/bin — the sqlcmd 18 cifra a conexão por padrão; se o certificado do servidor for autoassinado, entra o -No (encryption optional).

Caminho 1 — Docker 2025 no openSUSE (o que faz sentido hoje)

É o único jeito suportado de ter SQL Server 2025 num Leap. A imagem é mcr.microsoft.com/mssql/server:2025-latest. O host pode ser Leap, Tumbleweed, Ubuntu, o que for — desde que seja x86-64 com Docker (ou Podman). Se Docker ainda não está no Leap, o curso de Docker cobre o básico; no Leap recente:

sudo zypper in docker
sudo systemctl enable --now docker
sudo usermod -aG docker "$USER"   # relogue depois

Sobe o container. A variável antiga SA_PASSWORD está deprecada — use MSSQL_SA_PASSWORD. A senha precisa ter no mínimo 8 caracteres e três das quatro classes (maiúscula, minúscula, dígito, símbolo); senão o container sobe e morre, e o motivo só aparece no docker logs.

docker pull mcr.microsoft.com/mssql/server:2025-latest

docker run -e "ACCEPT_EULA=Y" 
  -e "MSSQL_SA_PASSWORD=SuaSenhaForte_123" 
  -p 1433:1433 --name sql1 --hostname sql1 
  -v sql1data:/var/opt/mssql 
  -d mcr.microsoft.com/mssql/server:2025-latest

docker ps
# STATUS precisa ser Up. Se for Exited:
docker logs sql1

O volume sql1data segura os dados em /var/opt/mssql. Sem volume, docker rm apaga o banco. A imagem já traz o sqlcmd 18:

docker exec -it sql1 /opt/mssql-tools18/bin/sqlcmd 
  -S localhost -U sa -P 'SuaSenhaForte_123' -No

Caminho 2 — nativo no Ubuntu 24.04 (SQL Server 2025)

Quem pode escolher o SO e quer o motor no systemd, sem container, vai de Ubuntu 24.04 (ou 22.04) / RHEL 9–10. Pacote mssql-server, setup interativo, mesma política de senha.

curl -fsSL https://packages.microsoft.com/keys/microsoft.asc 
  | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg

curl -fsSL https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list 
  | sudo tee /etc/apt/sources.list.d/mssql-server-2025.list

sudo apt-get update
sudo apt-get install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
systemctl status mssql-server --no-pager

Ferramentas no Ubuntu 24.04:

curl -sSL -O https://packages.microsoft.com/config/ubuntu/24.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y mssql-tools18 unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

Caminho 3 — nativo no SLES 15 (SQL Server 2022)

SLES 15 SP6 ainda é a casa do RPM. SQL Server 2022, não 2025. Ative os módulos Desktop Applications e Development Tools no SUSE Customer Center antes — o pacote depende deles. Disco em XFS ou ext4.

sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo zypper addrepo -fc https://packages.microsoft.com/config/sles/15/mssql-server-2022.repo
sudo zypper --gpg-auto-import-keys refresh
sudo zypper install -y mssql-server
sudo /opt/mssql/bin/mssql-conf setup
systemctl status mssql-server

Ferramentas:

sudo zypper ar https://packages.microsoft.com/config/sles/15/prod.repo
sudo zypper install -y mssql-tools18 unixODBC-devel glibc-locale-base
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc

Firewall, se for conectar de fora:

sudo zypper install -y firewalld
sudo systemctl start firewalld
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload

Colar o .repo do SLES no Leap ainda funciona às vezes — e continua sendo o mesmo atalho extraoficial de 2017. Não é suporte Microsoft. Btrfs no root do Leap é o primeiro obstáculo.

sqlcmd e a primeira query

Vale para o container e para o pacote nativo. O -No evita a recusa de certificado autoassinado do sqlcmd 18.

sqlcmd -S localhost -U sa -P 'SuaSenhaForte_123' -No
CREATE DATABASE TestDB;
SELECT Name FROM sys.databases;
GO
USE TestDB;
CREATE TABLE dbo.Inventory (
    id INT,
    name NVARCHAR(50),
    quantity INT,
    PRIMARY KEY (id)
);
INSERT INTO dbo.Inventory VALUES (1, 'banana', 150);
INSERT INTO dbo.Inventory VALUES (2, 'orange', 154);
GO
SELECT * FROM dbo.Inventory WHERE quantity > 152;
GO
QUIT

Boas práticas depois do primeiro login: criar um login seu, colocar em sysadmin e desabilitar o sa. Senha do sa no Docker aparece em ps e no env do container — em produção troca na hora.

Como era em 2017 (Leap 42.2 / CTP 2.0)

O gist original, no Leap 42.2, pedia 3,25 GB de RAM, XFS/ext4, repositório do SLES 12 e o instalador que não existe mais. Fica aqui como registro — não rode isso num Leap atual.

## OpenSUSE 42.2 64 bits, root — SQL Server vNext CTP 2.0
zypper ar -fc https://packages.microsoft.com/config/sles/12/mssql-server.repo
zypper --gpg-auto-import-keys refresh
zypper in mssql-server
/opt/mssql/bin/sqlservr-setup

zypper ar -fc https://packages.microsoft.com/config/sles/12/prod.repo
zypper --gpg-auto-import-keys refresh
zypper in mssql-tools unixODBC-devel
ln -sfn /opt/mssql-tools/bin/sqlcmd /usr/local/bin/sqlcmd
ln -sfn /opt/mssql-tools/bin/bcp /usr/local/bin/bcp

O passo a passo da época está no gist.

References

O SQL Server no Linux deixou de ser novidade em 2017. O que mudou de verdade é a lista de distros: Leap ficou de fora, SLES parou no 2022, e o atalho honesto para quem insiste no gecko é o container 2025.