COMO INSTALAR MICROSOFT SQL SERVER NO OPENSUSE LINUX

INTRODUÇÃO

Autor: Alessandro de Oliveira Faria (A.K.A. CABELO) <cabelo at opensuse.org>
Data: 06/02/2017

MS SQL Server voltando as origens (*NIX), pois foi criado em parceria com SYBASE. Até a versão 4.X (se não me engano), os dois banco de dados era praticamente idênticos. Utilizei muito o SYBASE no Conectiva Linux em 1998.

Agora o MS SQL está voltando ao ambiente Linux, baseado no SQL Server 2016, o pacote SQL Server for Linux proporciona todos os recursos para criar e desenvolver em uma única plataforma Linux produtos de acesso em banco de dados, além do gerenciamento de dados e análise de negócios.

Satya Nadella, o CEO da Microsoft assumiu prover uma maior abertura ao GNU/Linux, e assim está acontecendo. Pois o produto SQL Server, uma das peças mais populares de software na estante Microsoft, foi disponibilizado para Linux, e veremos neste artigo como utilizá-lo.

Paula Bellizia e Alessandro Faria (Cabelo)

O SQL Server for Linux apresenta todas as principais características que os usuários esperam deste produto. Depois de tornar open source o framework .NET para levá-lo ao Linux e OS X, além de ter criado uma fundação para promover software de código aberto, acredito que a decisão de disponibilizar este banco de dados no ambiente GNU/Linux é um marco. Muitas máquinas poderão sair da ilegalidade com o Windows Server e utilizar a plataforma Linux junto ao servidor MSSQL.

MÃO NA MASSA

 

O ambiente utilizado neste documento foi o openSUSE Leap 42.2 64 bits, estou elaborando uma imagem Linux openSUSE (CLARO) para facilitar a vida de pessoas que não estão acostumadas com as plataformas *NIX e derivados.

Para iniciar, adicione o repositório MS SQL Server conforme os comandos no exemplo a abaixo:

su # zypper ar https://packages.microsoft.com/config/sles/12/mssql-server.repo
Adicionando o repositório ‘packages-microsoft-com-mssql-server’ …………..[concluído]
Repositório ‘packages-microsoft-com-mssql-server’ adicionado com sucesso
Habilitado             : Sim
Atualização automática : Não
Verificação GPG        : Sim
Prioridade             : 99
URI                    : https://packages.microsoft.com/sles/12/mssql-server

su
# zypper ar https://packages.microsoft.com/config/sles/12/mssql-server.repo

Adicionando o repositório ‘packages-microsoft-com-mssql-server’ …………..[concluído]
Repositório ‘packages-microsoft-com-mssql-server’ adicionado com sucesso
Habilitado             : Sim
Atualização automática : Não
Verificação GPG        : Sim
Prioridade             : 99
URI                    : https://packages.microsoft.com/sles/12/mssql-server

Após adicionar o repositório, utilize o comando refresh para atualizá-lo:

# zypper ref
Baixando os metadados do repositório ‘packages-microsoft-com-mssql-server’ ———–[|]
Chave de assinatura de novo repositório ou pacote recebida:
Repositório:                 packages-microsoft-com-mssql-server
Nome da chave:               Microsoft (Release signing) <[email protected]>
Impressão digital da chave:  BC528686 B50D79E3 39D3721C EB3E94AD BE1229CF
Chave criada em:             Qua 28 Out 2015 21:21:48 BRST
Chave expira em:             (não expira)
Nome do RPM:                 gpg-pubkey-be1229cf-5631588c

Você quer rejeitar a chave, confiar temporariamente ou confiar sempre? [r/t/s/? exibe todas as opções] (r): s
Baixando os metadados do repositório ‘packages-microsoft-com-mssql-server’ …[concluído]
Construindo o cache do repositório ‘packages-microsoft-com-mssql-server’ …..[concluído]
Todos os repositórios foram atualizados.

Com o repositório atualizado, instale o pacote MS SQL SERVER conforme o comando abaixo:

# zypper install mssql-server
Carregando dados do repositório…
Lendo os pacotes instalados…
Resolvendo dependências de pacote…

O seguinte pacote NOVO será instalado:

mssql-server

1 novo pacote a ser instalado.
Tamanho total do download: 141,4 MiB. Já em cache: 0 B. Após a operação, 669,3 MiB adicionais serão utilizados.
Continuar? [s/n/? exibe todas as opções] (s):
Baixando pacote mssql-server-14.0.200.24-2.x86_64                                                                                                  (1/1), 141,4 MiB (669,3 MiB descompactado)
Baixando: mssql-server-14.0.200.24-2.x86_64.rpm ……………..[concluído (44,4 KiB/s)]
Verificando por conflito de arquivos: ………………………………….[concluído]
(1/1) Instalando: mssql-server-14.0.200.24-2.x86_64 ……………………..[concluído]

Ao término do download e instalação, execute o comando sqlservr-setup, LEIA e se estiver de acordo, aceite o termo de licenciamento digitando “YES” precedido da tecla ENTER. Para terminar defina a senha do administrador do Banco de Dados e confirme a criação dos link simbólicos para o init.d.

# /opt/mssql/bin/sqlservr-setup
Microsoft(R) SQL Server(R) Setup

You can abort setup at anytime by pressing Ctrl-C. Start this program
with the –help option for information about running it in unattended
mode.

The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746388 and found
in /usr/share/doc/mssql-server/LICENSE.TXT.

Do you accept the license terms? If so, please type “YES”: YES
Please enter a password for the system administrator (SA) account:
The specified password does not meet SQL Server password policy requirements
because it is not complex enough. The password must be at least 8 characters
long and contain characters from three of the following five sets: uppercase
letters, lowercase letters, numbers, non-alphanumeric characters, or unicode
characters that are categorized as alphabetic characters, but are not
uppercase or lowercase.

Please enter a password for the system administrator (SA) account:
Please confirm the password for the system administrator (SA) account:

Setting system administrator (SA) account password…

Do you wish to start the SQL Server service now? [y/n]: y
Do you wish to enable SQL Server to start on boot? [y/n]: y
Created symlink from /etc/systemd/system/multi-user.target.wants/mssql-server.service to /usr/lib/systemd/system/mssql-server.service.

Setup completed successfully.

Para verificar que o servidor MS SQL está funcionando corretamente, utilize o comando systemctl conforme o exemplo:

# systemctl status mssql-server
● mssql-server.service – Microsoft(R) SQL Server(R) Database Engine
Loaded: loaded (/usr/lib/systemd/system/mssql-server.service; enabled; vendor preset: disabled)
Active: active (running) since Seg 2017-01-23 17:51:28 BRST; 53s ago
Main PID: 3239 (sqlservr)
CGroup: /system.slice/mssql-server.service
├─3239 /opt/mssql/bin/sqlservr
└─3244 /opt/mssql/bin/sqlservr

Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.21 spid17s     A self-generated certificate was successfully loaded for encryption.
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.22 spid17s     Server is listening on [ 0.0.0.0 <ipv4> 1433].
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.22 Server      Server is listening on [ 127.0.0.1 <ipv4> 1434].
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.22 Server      Dedicated admin connection support was established for listening locally on port 1434.
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.22 spid17s     SQL Server is now ready for client connections. This is an informational message; no user ac…is required.
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.35 spid7s      The tempdb database has 1 data file(s).
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.35 spid20s     The Service Broker endpoint is in disabled or stopped state.
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.35 spid20s     The Database Mirroring endpoint is in disabled or stopped state.
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.36 spid20s     Service Broker manager has started.
Jan 23 17:51:31 lenovo02.intel sqlservr[3239]: 2017-01-23 17:51:31.43 spid5s      Recovery is complete. This is an informational message only. No user action is required.
Hint: Some lines were ellipsized, use -l to show in full.

 

INSTALANDO AS FERRAMENTAS CLIENTES E UTILITÁRIOS

 

Para instalar as ferramentas clientes, devemos adicionar o repositório da Microsoft conforme o exemplo abaixo. Não esqueça de utilizar o comando zypper ref para atualizar o repositório recém adicionado.

# zypper ar https://packages.microsoft.com/config/sles/12/prod.repo
Adicionando o repositório ‘packages-microsoft-com-prod’ ………………….[concluído]
Repositório ‘packages-microsoft-com-prod’ adicionado com sucesso
Habilitado             : Sim
Atualização automática : Não
Verificação GPG        : Sim
Prioridade             : 99
URI                    : https://packages.microsoft.com/sles/12/prod

Utilize o comando zypper com os respectivos nomes dos pacotes MSSQL-TOOLS e unixODBC-devel para instalar os pacotes clientes e utilitários. Lembre-se de ler, e somente se estiver de acordo,aceite os termos de Licenciamento.

# zypper install mssql-tools unixODBC-devel
Carregando dados do repositório…
Lendo os pacotes instalados…
Resolvendo dependências de pacote…

Os seguintes 3 pacotes NOVOS serão instalados:
msodbcsql mssql-tools unixODBC-devel

3 novos pacotes a serem instalados.
Tamanho total do download: 4,8 MiB. Já em cache: 0 B. Após a operação, 17,2 MiB adicionais serão utilizados.
Continuar? [s/n/? exibe todas as opções] (s):
Baixando pacote msodbcsql-13.1.3.0-1.x86_64                                                                                                        (1/3),   3,5 MiB ( 15,8 MiB descompactado)
Baixando: msodbcsql-13.1.3.0-1.x86_64.rpm …………………..[concluído (52,8 KiB/s)]
Baixando pacote mssql-tools-14.0.2.0-1.x86_64                                                                                                      (2/3),   1,2 MiB (  1,2 MiB descompactado)
Baixando: mssql-tools-14.0.2.0-1.x86_64.rpm …………………[concluído (47,2 KiB/s)]
Baixando pacote unixODBC-devel-2.3.4-1.5.x86_64                                                                                                    (3/3),  40,5 KiB (192,1 KiB descompactado)
Baixando: unixODBC-devel-2.3.4-1.5.x86_64.rpm …………………………..[concluído]
Verificando por conflito de arquivos: ………………………………….[concluído]
(1/3) Instalando: msodbcsql-13.1.3.0-1.x86_64 —————————————-[|]The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746838 and found in
/usr/share/doc/msodbcsql/LICENSE.TXT . By entering ‘YES’,
you indicate that you accept the license terms.

Do you accept the license terms? (Enter YES or NO)
YES
(1/3) Instalando: msodbcsql-13.1.3.0-1.x86_64 …………………………..[concluído]
(2/3) Instalando: mssql-tools-14.0.2.0-1.x86_64 ————————————–[-]The license terms for this product can be downloaded from
http://go.microsoft.com/fwlink/?LinkId=746949 and found in
/usr/share/doc/mssql-tools/LICENSE.txt . By entering ‘YES’,
you indicate that you accept the license terms.

Do you accept the license terms? (Enter YES or NO)
YES
(2/3) Instalando: mssql-tools-14.0.2.0-1.x86_64 …………………………[concluído]
(3/3) Instalando: unixODBC-devel-2.3.4-1.5.x86_64 ……………………….[concluído]

Crie os links simbólicos na pasta /usr/bin como super-usuário:

# ln -sfn /opt/mssql-tools/bin/sqlcmd-13.0.1.0 /usr/bin/sqlcmd
# ln -sfn /opt/mssql-tools/bin/bcp-13.0.1.0 /usr/bin/bcp

Para acessar o servidor utilizando o comando SQLCMD, deixo alguns exemplos de manipulação e uso desta serviço/ferramenta.

sqlcmd -S [IP-SERVIDOR] -U SA -P [SENHA DO ADMINISTRATIVA]
1>

Testando consultas SQL no console:

1> SELECT Name from sys.Databases;
2> GO
Name
—————————-
master
tempdb
model
msdb
(4 rows affected)

Criando banco de dados:

1> CREATE DATABASE testdb;
2> GO
1>

Utilizando/abrindo o banco de dados desejado:

1> USE testdb;
2> GO
Changed database context to ‘testdb’.

Criando tabelas:

1> CREATE TABLE inventory (id INT, name NVARCHAR(50), quantity INT);
2> GO
1>
(1 rows affected)

Inserindo dados na tabela:

1> INSERT INTO inventory VALUES (1, ‘banana’, 150);
2> INSERT INTO inventory VALUES (2, ‘orange’, 154);
3> GO (1 rows affected)

Consultando dados:

1> SELECT * FROM inventory WHERE quantity > 152;
2> GO

id          name                                               quantity   
----------- -------------------------------------------------- -----------
          2 orange                                                     154
(1 rows affected)

1>
1> QUIT

Para remover o serviço, use o comando zypper com o parâmetro rm e exclusão da pasta /var/opt/mssql/:

# zypper remove mssql-server
Carregando dados do repositório…
Lendo os pacotes instalados…
Resolvendo dependências de pacote…

O seguinte pacote será REMOVIDO:
mssql-server

1 pacote para remover.
Após a operação, 669,3 MiB será liberado.
Continuar? [s/n/? exibe todas as opções] (s):
(1/1) Removendo mssql-server-14.0.200.24-2.x86_64 ……………………….[concluído]

# rm -rf /var/opt/mssql/

Rolar para cima