Connexion MSSQL depuis Ubuntu

10

J'ai besoin d'un tutoriel simple et complet pour établir une connexion MSSQL depuis Ubuntu.

Je pense que j'ai installé FreeTDS et UnixODBC mais les configurations sont très compliquées, je n'ai pas compris le problème.

J'ai suivi ce tutoriel: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Mais j'ai échoué.

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

Éditer:

Avant cette modification, "/etc/odbcinst.ini" et "/etc/odbc.ini" étaient vides.

J'ai ajouté ces lignes à /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

J'ai ajouté ces lignes à /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

Je n'ai fait aucun changement sur "/etc/freetds/freetds.conf" depuis le tout début.

Pourtant, rien n'a changé.

mertyildiran
la source
avez-vous créé une entrée sur le fichier ODBC (/etc/odbc.ini)? et vérifiez également les lecteurs dans le fichier "/etc/odbcinst.ini"
vembutech
Ces deux fichiers sont vides, que dois-je faire exactement? Pouvez-vous partager un lien ou quelques détails?
mertyildiran
Je crois que vous avez manqué l'étape "Configurer UnixODBC" disponible dans le lien que vous avez suivi. Veuillez mettre à jour ces deux fichiers comme dans l'URL: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/… et vérifier si le problème est résolu.
vembutech
Rien n'a changé J'ai édité la question que vous pouvez voir ci
mertyildiran

Réponses:

11

Voici les instructions étape par étape (trouvées ici) :

Tout d'abord, installez unixODBC:

sudo apt-get install unixodbc unixodbc-dev

J'ai également installé les packages suivants (peut-être nécessaires):

sudo apt-get install tdsodbc php5-odbc

Ensuite, téléchargez, décompressez, compilez et installez FreeTDS (attention, l'URL peut changer):

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

Tentez de vous connecter via Telnet à votre instance SQL Server:

telnet 192.168.0.1 1433

Utilisez l'outil tsql pour tester la connexion:

tsql -S 192.168.0.1 -U devuser

Cela devrait vous demander le mot de passe, après quoi vous pouvez espérer contre espoir de voir ce beau signe:

1>

Si cela a fonctionné, je recommande d'organiser une fête (de codage). La prochaine étape est une configuration. Ouvrez le fichier de configuration FreeTDS. /usr/local/etc/freetds.conf

Ajoutez l'entrée suivante au bas du fichier. Nous mettons en place un nom de source de données (DSN) appelé «MSSQL».

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

Ouvrez maintenant le fichier de configuration ODBC: /usr/local/etc/odbcinst.ini

Et ajoutez l'entrée de pilote MSSQL suivante (FreeTDS) à la fin:

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

Enfin, définissez le DSN dans ODBC dans le fichier odbc.ini ici /usr/local/etc/odbc.ini En ajoutant ce bit au fichier:

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

Testez la connexion à l'aide de l'outil isql:

isql -v MSSQL devuser 'devpass'

Si vous voyez "Connecté!" vous êtes en or, félicitations! Sinon, je suis vraiment désolé; voir ci-dessous où il existe des ressources qui pourraient vous aider.

Redémarrez maintenant Apache et testez-le à partir de PHP en utilisant «MSSQL» comme DSN. Si quelque chose ne fonctionne pas, vous pouvez essayer d'installer tout ou partie de ces packages: mdbtools libmdbodbc libmdbtools mdbtools-gmdb

Trevor Clarke
la source
après "tsql -S 192.168.0.1 -U devuser": Connexion fermée par l'hôte étranger. Que devrais-je faire?
mertyildiran du
utilisez votre adresse IP locale
Trevor Clarke
J'ai utilisé l'adresse IP du serveur MSSQL "tsql -S 77.223.141.204 -U bacon"
mertyildiran
ne serait-ce pas alors localhost? parce que vous ne pouvez pas vous connecter à votre propre adresse IP externe.
Trevor Clarke
Oui, il est impossible d'accéder à une adresse IP externe via cette méthode? Que devrais-je faire?
mertyildiran
0

J'espère que vous avez copié le contenu du lien vers le fichier. Vous devez mettre à jour les détails de votre serveur SQL dans le fichier "/etc/odbc.ini". Vous pouvez vous référer le lien http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/

vembutech
la source
après "tsql -S 192.168.0.1 -U devuser": Connexion fermée par l'hôte étranger. Que devrais-je faire?
mertyildiran
Pouvez-vous vérifier si le port 1433 est ouvert sur le serveur MSSQL. Vous devez vous assurer que vous pouvez accéder au port 1433 de votre serveur MSSQL. S'il n'est pas ouvert, veuillez ouvrir le port, puis vérifiez
vembutech
0

J'ai dû le faire pour Ubuntu 14.04 et 17.04, tous deux LTS 64 bits. Fonctionne probablement pour les versions ultérieures.

Installez unixodbc (connexions ODBC), freetds (connexions SQL Server) et tdsodbc (pont entre les deux précédents)

sudo apt install unixodbc freetds-bin tdsodbc

Ajoutez vos pilotes ODBC à /etc/odbcinst.ini (doit être vide)

[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

Ajoutez vos DSN à /etc/odbc.ini (devrait également être vide)

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

Et c'était tout.

ASalazar
la source
libtdsodbc.so et libtdsS.so peuvent également être trouvés dans / usr / lib / x86_64-linux-gnu / odbc /
Strixy
0

Pour répondre à la question impliquée par:

J'ai besoin d'un tutoriel simple et complet pour établir une connexion MSSQL depuis Ubuntu

... et en ignorant tous les trucs de configuration de FreeTDS.

Utilisez mssql-cli ( installation , utilisation ).

oeuftete
la source
0

Je travaille dans une entreprise qui utilise fortement les produits Microsoft. Cependant, je préfère travailler sur une machine Linux (Ubuntu). Plus précisément, j'utilise Ubuntu 16.04 LTS .

J'utilise DataGrip de JetBrains ou SQL Electron comme interfaces graphiques SQL. DataGrip nécessite le pilote Microsoft JDBC pour SQL Server que vous devez pointer manuellement lorsque vous ouvrez DataGrip pour la première fois. J'ai mis cela /usr/share/java/, mais n'importe où fonctionnera.

La connexion est simple sur mon ordinateur portable Windows 10. J'ouvre simplement SQL Server Management Studio et j'utilise mes informations d'identification pour me connecter (nom d'utilisateur + mot de passe); Je n'utilise pas l'authentification Windows.

Conditions préalables

Pour se connecter depuis Ubuntu, c'est un peu ( juste un peu ) de travail supplémentaire. Tout d'abord, sur ma machine Windows 10, j'ouvre un terminal Powershell et saisis ce qui suit

nslookup <server name here>

et il retourne quelque chose comme

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

Le nom et l'adresse du serveur seront statiques, donc ce qui précède ne sera nécessaire que pour s'exécuter une fois par serveur auquel vous essayez d'accéder.

DataGrip

Ensuite, je saute sur ma machine Linux et ouvre DataGrip. Pour le Hosttype que je tape <server's address>, Port: 1433 (c'est la valeur par défaut pour MS SQL Server). L'URL doit ressembler à quelque chose,

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

Si vous cliquez sur Test Connection, il vous demandera des informations de connexion si vous ne les avez pas encore ajoutées. Et c'est tout pour DataGrip!

DataGrip propose également le blog suivant, qui peut être utile aux nouveaux utilisateurs: Connexion de DataGrip à MS SQL Server

SQL Electron

Si vous ne souhaitez pas acheter DataGrip, vous pouvez utiliser SQL Electron. Les étapes sont similaires. Ouvrez SQL Electron, cliquez sur ajouter pour ajouter un nouveau serveur et pour Server Addresstaper <server's address>, Port: 1433, et enfin vos informations de connexion. Et c'est tout!

Jon
la source
0

Pour vous connecter à une instance MSSQL exécutée sur un serveur distant:

Suivez les étapes applicables dans cet article https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -server-2017

REMARQUE: Pour terminer les tests, vous devez effectuer quelques opérations supplémentaires: Modifiez /etc/odbc.ini et ajoutez ce qui suit:

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

Pour effectuer le test, exécutez ce qui suit dans le terminal:

isql -v MSSQL [nom d'utilisateur] [mot de passe]

Vous devriez voir une réponse "connectée".

Si vous rencontrez des difficultés, vérifiez que les ports de votre serveur Linux et Windows sont ouverts!

Atron Seige
la source