INTRODUÇÃO
Autor: Alessandro de Oliveira Faria (A.K.A. CABELO) <cabelo at opensuse.org>
Data: 06/02/2017
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.
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
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
# 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/