Conexão MSSQL do Ubuntu

10

Preciso de um tutorial fácil e completo para fazer uma conexão MSSQL a partir do Ubuntu.

Acho que instalei o FreeTDS e o UnixODBC, mas as configurações são muito complicadas, não entendi o problema.

Segui este tutorial: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Mas eu falhei.

root@hackmachine:~# isql -v example.com XXXXX XXXXXXX
[IM002][unixODBC][Driver Manager]Data source name not found, and no default driver specified
[ISQL]ERROR: Could not SQLConnect
root@hackmachine:~# 

Editar:

Antes desta edição, "/etc/odbcinst.ini" e "/etc/odbc.ini" estavam vazios.

Adicionei estas linhas ao /etc/odbcinst.ini:

[FreeTDS]

Description     = TDS driver (Sybase/MS SQL)

Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so

Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so

CPTimeout       =

CPReuse         =

FileUsage       = 1

Adicionei estas linhas ao /etc/odbc.ini:

[project_development]
Driver = FreeTDS
Description     = ODBC connection via FreeTDS
Trace           = No
Servername      = developer
Database        = project_development

[project_test]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = No
Servername = developer
Database = test

[project_production]
Driver = FreeTDS
Description = ODBC connection via FreeTDS
Trace = No
Servername = production
Database = project_production

Não fiz alterações no "/etc/freetds/freetds.conf" desde o início.

Ainda assim, nada mudou.

mertyildiran
fonte
você criou uma entrada no arquivo ODBC (/etc/odbc.ini)? e também verificar as unidades em "/etc/odbcinst.ini" file
vembutech
Ambos os arquivos estão vazios, o que devo fazer exatamente? Você pode compartilhar um link ou alguns detalhes?
precisa saber é
Acredito que você tenha perdido a etapa "Configure UnixODBC" disponível no link que você seguiu. Atualize esses dois arquivos como no URL: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/… e verifique se o problema foi resolvido.
vembutech
Nada mudou. Eu editei a pergunta que você pode ver acima
Mertyildiran

Respostas:

11

Aqui estão as instruções passo a passo (encontradas aqui) :

Primeiro, instale o unixODBC:

sudo apt-get install unixodbc unixodbc-dev

Também instalei os seguintes pacotes (talvez necessários):

sudo apt-get install tdsodbc php5-odbc

Em seguida, baixe, descompacte, compile e instale o FreeTDS (aviso, o URL pode mudar):

cd /usr/local

wget http://ibiblio.org/pub/Linux/ALPHA/freetds/stable/freetds-stable.tgz
tar xvfz freetds-stable.tgz
cd freetds-0.82
./configure --enable-msdblib --with-tdsver=8.0 --with-unixodbc=/usr
make
make install
make clean

Tente uma conexão através do Telnet com sua instância do SQL Server:

telnet 192.168.0.1 1433

Use a ferramenta tsql para testar a conexão:

tsql -S 192.168.0.1 -U devuser

Isso deve solicitar a senha, após a qual você pode ter esperança de ver este belo sinal:

1>

Se isso funcionou, eu recomendo dar uma festa (de codificação). A seguir, algumas configurações. Abra o arquivo de configuração do FreeTDS. /usr/local/etc/freetds.conf

Adicione a seguinte entrada na parte inferior do arquivo. Estamos configurando um nome de fonte de dados (DSN) chamado 'MSSQL'.

[MSSQL]
host = 192.168.0.1
port = 1433
tds version = 8.0

Agora abra o arquivo de configuração ODBC: /usr/local/etc/odbcinst.ini

E adicione a seguinte entrada do driver MSSQL (FreeTDS) no final:

[FreeTDS]
Description = FreeTDS driver
Driver = /usr/local/lib/libtdsodbc.so
Setup=/usr/lib/odbc/libtdsS.so
FileUsage = 1
UsageCount = 1

Por fim, configure o DSN no ODBC no arquivo odbc.ini aqui /usr/local/etc/odbc.ini Adicionando este bit ao arquivo:

[MSSQL]
Description = MS SQL Server
Driver = /usr/local/lib/libtdsodbc.so
Server = 192.168.2.3
UID = devuser
PWD = devpass
ReadOnly = No
Port = 1433

Teste a conexão usando a ferramenta isql:

isql -v MSSQL devuser 'devpass'

Se você vir "Conectado!" você é dourada, parabéns! Se não, sinto muito; veja abaixo onde existem alguns recursos que podem ajudar.

Agora reinicie o Apache e teste-o no PHP usando 'MSSQL' como DSN. Se algo não funcionar, você pode tentar instalar um ou todos esses pacotes: mdbtools libmdbodbc libmdbtools mdbtools-gmdb

Trevor Clarke
fonte
após "tsql -S 192.168.0.1 -U devuser": conexão fechada por host externo. O que devo fazer?
precisa saber é
use o ip local #
Trevor Clarke
Na verdade, eu usei o endereço IP do servidor MSSQL "tsql -S 77.223.141.204 -U bacon"
mertyildiran
não seria localhost então? porque você não pode se conectar ao seu próprio ip externo.
Trevor Clarke
Sim, é um IP externo que não é possível acessar por esse método? O que devo fazer?
precisa saber é o seguinte
0

Espero que você tenha copiado o conteúdo no link para o arquivo. Você precisa atualizar os detalhes do servidor SQL no arquivo "/etc/odbc.ini". Você pode consultar o link http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/

vembutech
fonte
após "tsql -S 192.168.0.1 -U devuser": conexão fechada por host externo. O que devo fazer?
precisa saber é
Você pode verificar se a porta 1433 está aberta no servidor MSSQL. Você precisa ter certeza de que pode acessar a porta 1433 do seu servidor MSSQL. Se não estiver aberto, por favor, abra a porta e verifique:
vembutech
0

Eu tive que fazer isso no Ubuntu 14.04 e 17.04, ambos LTS de 64 bits. Provavelmente funciona para versões posteriores.

Instale unixodbc (conexões ODBC), freetds (conexões do SQL Server) e tdsodbc (ponte entre os dois primeiros)

sudo apt install unixodbc freetds-bin tdsodbc

Adicione seus drivers ODBC ao /etc/odbcinst.ini (deve estar vazio)

[SQL Server]
Description = FreeTDS driver
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
FileUsage = 1
UsageCount = 1

Adicione seus DSNs ao /etc/odbc.ini (também deve estar vazio)

[ACCOUNTING]
Description = Accounting database
Driver = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Server = 123.123.123.123
Database = your_database_name
Port = 1433

E isso foi tudo.

ASalazar
fonte
libtdsodbc.so e libtdsS.so também podem ser encontrados em / usr / lib / x86_64-linux-gnu / odbc /
Strixy
0

Para responder à pergunta implícita por:

Preciso de um tutorial fácil e completo para fazer uma conexão MSSQL a partir do Ubuntu

... e ignorando todo o material de configuração do FreeTDS.

Use mssql-cli ( instalação , uso ).

oeuftete
fonte
0

Eu trabalho em uma empresa que usa muito os produtos da Microsoft. No entanto, eu prefiro trabalhar em uma máquina Linux (Ubuntu). Especificamente, eu uso o Ubuntu 16.04 LTS .

Eu uso o DataGrip ou o SQL Electron do JetBrains como SQL GUIs. O DataGrip exigirá o Driver Microsoft JDBC para SQL Server, para o qual você precisa apontar manualmente quando abrir o DataGrip pela primeira vez. Coloquei isso /usr/share/java/, mas em qualquer lugar funcionará.

A conexão é simples no meu laptop Windows 10. Simplesmente abro o SQL Server Management Studio e uso minhas credenciais para efetuar login (nome de usuário + senha); Eu não uso a autenticação do Windows.

Pré-requisitos

Para se conectar a partir do Ubuntu, é um pouco mais ( apenas um pouco ) de trabalho extra. Primeiro, na minha máquina Windows 10, abro um terminal Powershell e digito o seguinte

nslookup <server name here>

e retorna algo como

Non-authoritative answer:
Name: <server name here>
Address: <server's address>

O nome e o endereço do servidor serão estáticos, portanto, o acima será necessário apenas para executar uma vez por servidor que você tentar acessar.

DataGrip

Então, eu pulo na minha máquina Linux e abro o DataGrip. Para Hostdigitar <server's address>, Porta: 1433 (esse é o padrão para o MS SQL Server). O URL deve ser algo como,

URL: jdbc:sqlserver://<server's address>:1433

Se você clicar em Sim Test Connection, ele solicitará informações de login, se você ainda não o adicionou. E é isso para o DataGrip!

O DataGrip também possui o seguinte blog, que pode ser útil para novos usuários: Conectando o DataGrip ao MS SQL Server

SQL Electron

Se você não deseja adquirir o DataGrip, pode usar o SQL Electron. Os passos são semelhantes. Abra o SQL Electron, clique em adicionar para adicionar um novo servidor e Server Addressdigite <server's address>Porta: 1433 e, finalmente, suas credenciais de logon. E é isso!

Jon
fonte
0

Para conectar-se à instância do MSSQL em execução em um servidor remoto:

Siga as etapas aplicáveis ​​neste artigo https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -server-2017

NOTA: Para concluir os testes, você precisa fazer mais algumas coisas: Edite o /etc/odbc.ini e adicione o seguinte:

[MSSQL] Driver=ODBC Driver 17 for SQL Server Server=[ServerIP][,1433]

Para executar o teste, execute o seguinte no terminal:

isql -v MSSQL [nome de usuário] [senha]

Você deve ver uma resposta "conectada".

Se estiver com problemas, verifique se as portas do servidor Linux e Windows estão abertas!

Atron Seige
fonte