Instalando o driver ODBC 13 para o MSSQL Server no Amazon Linux na instância do EC2

2

Problema:

Precisa acessar e executar o Procedimento Armazenado do MSSQL a partir do código PHP.

Detalhes da versão:

Máquina de desenvolvimento local - Windows 10 com XAMPP com PHP 7

Sistema de produção - Amazon AWS AMI Linux com PHP 5.3.2

O que eu preciso:

Deseja usar a conexão odbc para acessar o MSSQL no meu servidor LOCAL e LIVE.

O que eu tentei para o servidor LIVE:

Queria ter certeza de que o servidor LIVE é compatível com pacotes e pode instalar os pacotes necessários corretamente.

Por isso, comecei com os seguintes passos:

1) Olhei no link abaixo, onde descobri que precisamos usar o ODBC para acesso mais rápido aos dados: link

2) Tentou instalar o seguinte driver ODBC no Amazon Linux, conforme mencionado abaixo:

(Assumindo que o instalador do RHEL 6 também funcionaria no Amazon Linux. Por favor, deixe-me saber se estou incorreto)

  • Driver ODBC da Microsoft 13.1 para SQL Server - Windows + Linux

sudo su curl packages.microsoft.com/config/rhel/6/prod.repo > /etc/yum.repos.d/mssql-release.repo

exit

sudo yum remove unixODBC #to avoid conflicts

sudo ACCEPT_EULA=Y yum install msodbcsql-13.0.1.0-1 mssql-tools

Mas o instalador não mostra o erro abaixo:

Error: msodbcsql conflicts with unixODBC-utf16-2.3.1-1.x86_64
Error: Package: msodbcsql-13.1.4.0-1.x86_64 (packages-microsoft-com-prod)
           Requires: unixODBC >= 2.3.1
           Available: unixODBC-2.2.14-14.7.amzn1.i686 (amzn-main)
               unixODBC = 2.2.14-14.7.amzn1

3) Por isso, tentei instalar o unixODBC usando o link

- Downloaded the package via curl
- gunzip unixODBC*.tar.gz
- tar xvf unixODBC*.tar

Em seguida, usei os seguintes comandos para instalar o mesmo:

./configure
make
make install 

4) Reiniciei o serviço httpd e tentei novamente a etapa 2, mas o instalador falhou com o mesmo erro mencionado no ponto 2.

O que eu tentei para a máquina LOCAL:

  1. Download do arquivo .msi para o Microsoft ODBC Driver 13.1 para SQL Server - Windows + Linux
  2. Instalou o mesmo na minha máquina e reiniciou o xampp apache. Mas ainda estou recebendo Uncaught PDOException: could not find driver

UPDATE : Resolvido o problema no sistema local, adicionando a dll de extensão no php.ini e reiniciado o servidor.

Alguém poderia, por favor, me avisar o que eu perdi na configuração do LIVE?

    
por Mrudang Vora 14.03.2017 / 13:07

2 respostas

1

Abordagem para solução

Como o link direto para a instalação não estava funcionando, havia baixado arquivos rpm para instalação off-line usando as linhas abaixo:

sudo mkdir /tmp/RedHat6Packages

sudo curl https://packages.microsoft.com/rhel/6/prod/msodbcsql-13.1.4.0-1.x86_64.rpm > /tmp/RedHat6Packages/msodbcsql-13.1.4.0-1.x86_64.rpm

sudo curl https://packages.microsoft.com/rhel/6/prod/mssql-tools-14.0.4.0-1.x86_64.rpm > /tmp/RedHat6Packages/mssql-tools-14.0.4.0-1.x86_64.rpm

Tentou instalar offline com os seguintes comandos: %código% %código% cd /tmp/RedHat6Packages/

Mas ainda estava recebendo o mesmo erro: %código% Comando encontrado para verificar os pacotes: sudo yum localinstall msodbcsql-13.1.4.0-1.x86_64.rpm

Isso mostrou o seguinte aviso:

Loaded plugins: priorities, update-motd, upgrade-helper
2 packages excluded due to repository priority protections
unixODBC-2.2.14-14.7.amzn1.x86_64 : A complete ODBC driver manager for Linux
Repo        : amzn-main
Matched from:
Filename    : /usr/lib64/libodbcinst.so.2    

unixODBC-utf16-2.3.1-1.x86_64 : ODBC driver manager with UTF16 character conversion enabled by default
Repo        : packages-microsoft-com-prod
Matched from:
Filename    : /usr/lib64/libodbcinst.so.2

JUMP diretamente para a solução

Verifiquei o link abaixo mencionado:

O que isso significa: pacotes excluídos devido às proteções prioritárias do repositório

Prioridades desativadas editando sudo yum localinstall mssql-tools-14.0.4.0-1.x86_64.rpm e defina error: Failed dependencies: libodbcinst.so.2()(64bit) is needed by msodbcsql-13.1.4.0-1.x86_64 unixODBC >= 2.3.1 is needed by msodbcsql-13.1.4.0-1.x86_64

Conseguiu instalar o driver usando os mesmos comandos mencionados: %código% %código% sudo yum provides /usr/lib64/libodbcinst.so.2

Ainda não foi possível descobrir onde estão os arquivos de extensão, mas criaram outra pergunta ( Próximas etapas após a instalação do MSSQL ODBC 13.1 no Amazon EC2 Linux ) como propósito desta questão está resolvido.

Como um novato no Linux (especialmente quem migrou do Windows), foi realmente difícil encontrar a solução acima. Espero que ajude alguém !!

    
por 23.03.2017 / 07:26
0

Aqui estão os comandos que devem funcionar para o Amazon Linux AMI:

curl https://packages.microsoft.com/config/rhel/7/prod.repo | sudo tee /etc/yum.repos.d/msprod.repo1
sudo yum remove unixODBC-utf16 unixODBC-utf16-devel
sudo yum info unixODBC*
sudo yum install mssql-tools unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' | tee -a ~/.bash_profile && source ~/.bash_profile

Fonte: Instale o sqlcmd e bcp as ferramentas de linha de comando do SQL Server no Linux .

Caso contrário, tente instalar uma versão mais antiga que não seja conflitante, de acordo com essa postagem , por exemplo

sudo ACCEPT_EULA=Y yum install msodbcsql-13.0.1.0-1 mssql-tools-14.0.2.0-1
    
por 08.02.2018 / 11:48