Connessione MSSQL da Ubuntu


10

Ho bisogno di un tutorial semplice e completo per creare una connessione MSSQL da Ubuntu.

Penso di aver installato FreeTDS e UnixODBC ma le configurazioni sono molto complicate, non ho capito il problema.

Ho seguito questo tutorial: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Ma ho fallito.

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:~# 

Modificare:

Prima di questa modifica "/etc/odbcinst.ini" e "/etc/odbc.ini" era vuoto.

Ho aggiunto queste righe a /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

Ho aggiunto queste righe a /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

Non ho apportato modifiche a "/etc/freetds/freetds.conf" sin dall'inizio.

Tuttavia, nulla è cambiato.


hai creato una voce sul file ODBC (/etc/odbc.ini)? e controlla anche le unità nel file "/etc/odbcinst.ini"
vembutech,

Entrambi questi file sono vuoti, cosa devo fare esattamente? Puoi condividere un link o alcuni dettagli?
mertyildiran,

Credo che tu abbia perso il passaggio "Configura UnixODBC" disponibile nel link che hai seguito. Si prega di aggiornare questi due file come nell'URL: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/… e verificare se il problema è stato risolto.
Vembutech,

Non è cambiato nulla Ho modificato la domanda che puoi vedere sopra
mertyildiran,

Risposte:


11

Ecco le istruzioni passo-passo (trovate qui) :

Innanzitutto, installa unixODBC:

sudo apt-get install unixodbc unixodbc-dev

Ho anche installato i seguenti pacchetti (forse necessari):

sudo apt-get install tdsodbc php5-odbc

Quindi scaricare, decomprimere, compilare e installare FreeTDS (attenzione, l'URL potrebbe cambiare):

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

Tentare una connessione tramite Telnet all'istanza di SQL Server:

telnet 192.168.0.1 1433

Utilizzare lo strumento tsql per testare la connessione:

tsql -S 192.168.0.1 -U devuser

Questo dovrebbe richiedere la password, dopo di che puoi sperare contro la speranza di vedere questo bellissimo segno:

1>

Se ha funzionato, ti consiglio di organizzare una festa (di programmazione). Il prossimo è qualche configging. Apri il file di configurazione di FreeTDS. /usr/local/etc/freetds.conf

Aggiungi la seguente voce in fondo al file. Stiamo impostando un nome di origine dati (DSN) chiamato "MSSQL".

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

Ora apri il file di configurazione ODBC: /usr/local/etc/odbcinst.ini

E aggiungi la seguente voce del driver MSSQL (FreeTDS) alla fine:

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

Quindi, infine, imposta il DSN in ODBC nel file odbc.ini qui /usr/local/etc/odbc.ini Aggiungendo questo bit al file:

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

Prova la connessione usando lo strumento isql:

isql -v MSSQL devuser 'devpass'

Se vedi "Connesso!" sei d'oro, complimenti! Altrimenti, mi dispiace davvero; vedi sotto dove ci sono alcune risorse che potrebbero aiutare.

Ora riavvia Apache e testalo da PHP usando "MSSQL" come DSN. Se qualcosa non funziona, potresti provare a installare uno o tutti questi pacchetti: mdbtools libmdbodbc libmdbtools mdbtools-gmdb


dopo "tsql -S 192.168.0.1 -U devuser": connessione chiusa da host esterno. Cosa dovrei fare?
mertyildiran,

usa il tuo IP locale
Trevor Clarke,

In realtà ho usato l'indirizzo IP del server MSSQL "tsql -S 77.223.141.204 -U bacon"
mertyildiran,

non sarebbe localhost allora? perché non riesci a connetterti al tuo IP esterno.
Trevor Clarke,

Sì, è un IP esterno a cui non è possibile accedere tramite questo metodo? Cosa dovrei fare?
mertyildiran,


0

Spero che tu abbia copiato il contenuto nel link al file. Devi aggiornare i dettagli del tuo server SQL nel file "/etc/odbc.ini". Puoi fare riferimento al link http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/


dopo "tsql -S 192.168.0.1 -U devuser": connessione chiusa da host esterno. Cosa dovrei fare?
mertyildiran,

Puoi verificare se la porta 1433 è aperta nel server MSSQL. Devi assicurarti di poter accedere alla porta 1433 del tuo server MSSQL. Se non è aperto, aprire la porta e controllare
vembutech,

0

Ho dovuto farlo per Ubuntu 14.04 e 17.04, entrambi LTS a 64 bit. Probabilmente funziona per le versioni successive.

Installa unixodbc (connessioni ODBC), freetds (connessioni SQL Server) e tdsodbc (bridge tra i due precedenti)

sudo apt install unixodbc freetds-bin tdsodbc

Aggiungi i tuoi driver ODBC a /etc/odbcinst.ini (dovrebbe essere vuoto)

[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

Aggiungi i tuoi DSN a /etc/odbc.ini (dovrebbe essere anche vuoto)

[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 questo era tutto.


libtdsodbc.so e libtdsS.so possono anche essere trovati in / usr / lib / x86_64-linux-gnu / odbc /
Strixy

0

Per rispondere alla domanda implicita da:

Ho bisogno di un tutorial semplice e completo per creare una connessione MSSQL da Ubuntu

... e ignorando tutte le cose di installazione di FreeTDS.

Utilizzare mssql-cli ( installazione , utilizzo ).


0

Lavoro in un'azienda che utilizza fortemente prodotti Microsoft. Tuttavia, preferisco lavorare su una macchina Linux (Ubuntu). In particolare, utilizzo Ubuntu 16.04 LTS .

Uso DataGrip o SQL Electron di JetBrains come GUI SQL. DataGrip richiederà Microsoft JDBC Driver per SQL Server che è necessario puntare manualmente quando si apre DataGrip per la prima volta. L'ho inserito /usr/share/java/, ma funzionerà ovunque.

La connessione è semplice sul mio laptop Windows 10. Apro semplicemente SQL Server Management Studio e utilizzo le mie credenziali per accedere (nome utente + password); Non uso l'autenticazione di Windows.

Prerequisiti

Per connettersi da Ubuntu, è un po '( solo un po' ) di lavoro extra. Innanzitutto, sul mio computer Windows 10, apro un terminale Powershell e digito quanto segue

nslookup <server name here>

e restituisce qualcosa di simile

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

Il nome e l'indirizzo del server saranno statici, quindi quanto sopra sarà necessario per essere eseguito solo una volta per server a cui si tenta di accedere.

DataGrip

Quindi, salto sulla mia macchina Linux e apro DataGrip. Per il Hosttipo I <server's address>, Porta: 1433 (impostazione predefinita per MS SQL Server). L'URL dovrebbe essere simile a

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

Se fai clic su Test Connection, ti verranno richieste le informazioni di accesso se non le hai ancora aggiunte. E questo è tutto per DataGrip!

DataGrip ha anche il seguente blog, che può essere utile per i nuovi utenti: Connessione di DataGrip a MS SQL Server

SQL Electron

Se non si desidera acquistare DataGrip, è possibile utilizzare SQL Electron. I passaggi sono simili. Apri SQL Electron, fai clic su Aggiungi per aggiungere un nuovo server e, per Server Addressdigitare <server's address>, Porta: 1433 e infine le tue credenziali di accesso. E questo è tutto!


0

Per connettersi all'istanza MSSQL in esecuzione su un server remoto:

Seguire i passaggi applicabili in questo articolo https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -server-2017

NOTA: per completare i test, è necessario eseguire alcune altre operazioni: modificare /etc/odbc.ini e aggiungere quanto segue:

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

Per eseguire il test, eseguire quanto segue nel terminale:

isql -v MSSQL [nome utente] [password]

Dovresti vedere una risposta "connessa".

Se stai lottando, controlla che le porte sul tuo server Linux e Windows siano aperte!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.