De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Alessandro de Oliveira Faria
Data de Publicação: 08 de fevereiro de 2017
Veremos neste documento como executar um servidor Microsoft SQL Server na plataforma Linux. Acredito ser uma oportunidade para a comunidade GNU/Linux prover serviços de migração em servidores (local ou em Azure), como também uma ocasião favorável, pois em momentos de crise, podemos remover muitos servidores Windows Server da ilegalidade. Agradecimentos em especial para Paula Bellizia e Adriano Bottas da Microsoft pelo apoio no trabalho de interoperabilidade.
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 bancos de dados eram 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.
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) <gpgsecurity@microsoft.com> 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.
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/
Mais informações envie email para <cabelo (a) opensuse org>, e lembre-se, colaborar atrai amigos, competir atrai inimigos.
Alessandro de Oliveira Faria é Sócio-fundador da empresa OITI TECNOLOGIA fundada em Junho de 1996, empresa especializada em desenvolvimento de soluções com a tecnologia de Reconhecimento Facial, Consultor Biométrico, Experiência em Realidade Aumentada, Visão Computacional (opencv), Neuro-tecnologia, Redes Neurais e Programação multi-nuclear com CPU e GPU, atua na área de tecnologia desde 1986, leva o Linux a sério desde 1998, membro da comunidade Viva O Linux com mais de 50 palestras e 100 artigos publicados, mantenedor da biblioteca open-source de vídeo captura, Embaixador e openSUSE Member.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários