MSSQL-Verbindung von Ubuntu

10

Ich benötige ein einfaches und vollständiges Tutorial, um eine MSSQL-Verbindung von Ubuntu aus herzustellen.

Ich denke, ich habe FreeTDS und UnixODBC installiert, aber die Konfigurationen sind sehr kompliziert. Ich habe das Problem nicht verstanden.

Ich habe dieses Tutorial befolgt: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Aber ich habe versagt.

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

Bearbeiten:

Vor dieser Bearbeitung waren "/etc/odbcinst.ini" und "/etc/odbc.ini" leer.

Ich habe diese Zeilen zu /etc/odbcinst.ini hinzugefügt:

[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

Ich habe diese Zeilen zu /etc/odbc.ini hinzugefügt:

[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

Ich habe von Anfang an keine Änderungen an "/etc/freetds/freetds.conf" vorgenommen.

Trotzdem hat sich nichts geändert.

Mertyildiran
quelle
Haben Sie einen Eintrag in der ODBC-Datei (/etc/odbc.ini) erstellt? und überprüfen Sie auch die Laufwerke in der Datei "/etc/odbcinst.ini"
vembutech
Beide Dateien sind leer. Was soll ich genau tun? Können Sie einen Link oder einige Details teilen?
Mertyildiran
Ich glaube, Sie haben den Schritt "Configure UnixODBC" verpasst, der in dem Link verfügbar ist, dem Sie gefolgt sind. Bitte aktualisieren Sie diese beiden Dateien wie in der URL: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/… und prüfen Sie, ob das Problem behoben ist.
Vembutech
Nichts hat sich geändert Ich habe die Frage bearbeitet, die Sie oben sehen können
mertyildiran

Antworten:

11

Hier finden Sie schrittweise Anleitungen (hier zu finden) :

Installieren Sie zuerst unixODBC:

sudo apt-get install unixodbc unixodbc-dev

Ich habe auch die folgenden (möglicherweise erforderlichen) Pakete installiert:

sudo apt-get install tdsodbc php5-odbc

Laden Sie dann FreeTDS herunter, entpacken Sie es, kompilieren Sie es und installieren Sie es (Warnung, die URL kann sich ändern):

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

Versuchen Sie eine Verbindung über Telnet zu Ihrer SQL Server-Instanz:

telnet 192.168.0.1 1433

Verwenden Sie das tsql-Tool, um die Verbindung zu testen:

tsql -S 192.168.0.1 -U devuser

Dies sollte Sie zur Eingabe des Passworts auffordern, wonach Sie gegen die Hoffnung hoffen können, dieses schöne Zeichen zu sehen:

1>

Wenn das funktioniert hat, empfehle ich, eine (Codierungs-) Party zu schmeißen. Als nächstes wird etwas konfiguriert. Öffnen Sie die FreeTDS-Konfigurationsdatei. /usr/local/etc/freetds.conf

Fügen Sie den folgenden Eintrag am Ende der Datei hinzu. Wir richten einen Datenquellennamen (DSN) mit dem Namen 'MSSQL' ein.

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

Öffnen Sie nun die ODBC-Konfigurationsdatei: /usr/local/etc/odbcinst.ini

Fügen Sie am Ende den folgenden MSSQL-Treibereintrag (FreeTDS) hinzu:

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

Richten Sie schließlich den DSN in ODBC in der Datei odbc.ini hier /usr/local/etc/odbc.ini ein, indem Sie dieses Bit zur Datei hinzufügen:

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

Testen Sie die Verbindung mit dem isql-Tool:

isql -v MSSQL devuser 'devpass'

Wenn Sie "Verbunden!" Du bist golden, Glückwunsch! Wenn nicht, tut es mir wirklich leid; siehe unten, wo es einige Ressourcen gibt, die helfen könnten.

Starten Sie nun Apache neu und testen Sie es von PHP aus mit 'MSSQL' als DSN. Wenn etwas nicht funktioniert, können Sie versuchen, eines oder alle dieser Pakete zu installieren: mdbtools libmdbodbc libmdbtools mdbtools-gmdb

Trevor Clarke
quelle
nach "tsql -S 192.168.0.1 -U devuser": Verbindung durch fremden Host geschlossen. Was soll ich machen?
Mertyildiran
Verwenden Sie
Trevor Clarke
Ich habe tatsächlich die IP-Adresse des MSSQL-Servers "tsql -S 77.223.141.204 -U bacon" verwendet
mertyildiran
wäre es dann nicht localhost? weil Sie keine Verbindung zu Ihrer eigenen externen IP herstellen können.
Trevor Clarke
Ja, es ist eine externe IP, auf die über diese Methode nicht zugegriffen werden kann. Was soll ich machen?
Mertyildiran
0

Ich hoffe, Sie haben den Inhalt des Links zur Datei kopiert. Sie müssen Ihre SQL Server-Details in der Datei "/etc/odbc.ini" aktualisieren. Sie können auf den Link http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/ verweisen.

vembutech
quelle
nach "tsql -S 192.168.0.1 -U devuser": Verbindung durch fremden Host geschlossen. Was soll ich machen?
Mertyildiran
Können Sie überprüfen, ob der Port 1433 im MSSQL-Server geöffnet ist? Sie müssen sicherstellen, dass Sie auf den Port 1433 Ihres MSSQL-Servers zugreifen können. Wenn es nicht geöffnet ist, öffnen Sie
bitte
0

Ich musste dies für Ubuntu 14.04 und 17.04 tun, beide LTS 64-Bit. Funktioniert wahrscheinlich für spätere Versionen.

Installieren Sie unixodbc (ODBC-Verbindungen), freetds (SQL Server-Verbindungen) und tdsodbc (Brücke zwischen den beiden ersteren).

sudo apt install unixodbc freetds-bin tdsodbc

Fügen Sie Ihre ODBC-Treiber zu /etc/odbcinst.ini hinzu (sollte leer sein)

[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

Fügen Sie Ihre DSNs zu /etc/odbc.ini hinzu (sollte auch leer sein)

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

Und das war alles.

ASalazar
quelle
libtdsodbc.so und libtdsS.so können auch in / usr / lib / x86_64-linux-gnu / odbc /
Strixy
0

Um die folgende Frage zu beantworten:

Ich benötige ein einfaches und vollständiges Tutorial, um eine MSSQL-Verbindung von Ubuntu aus herzustellen

... und alle FreeTDS-Setup-Dinge ignorieren.

Verwenden Sie mssql-cli ( Installation , Verwendung ).

oeuftete
quelle
0

Ich arbeite in einem Unternehmen, das stark Microsoft-Produkte verwendet. Ich arbeite jedoch lieber auf einem Linux-Computer (Ubuntu). Insbesondere verwende ich Ubuntu 16.04 LTS .

Ich verwende DataGrip oder SQL Electron von JetBrains als SQL-GUIs. Für DataGrip ist ein Microsoft JDBC-Treiber für SQL Server erforderlich, auf den Sie beim ersten Öffnen von DataGrip manuell verweisen müssen. Ich habe das eingegeben /usr/share/java/, aber überall wird es funktionieren.

Das Anschließen ist auf meinem Windows 10-Laptop einfach. Ich öffne einfach SQL Server Management Studio und melde mich mit meinen Anmeldeinformationen an (Benutzername + Kennwort). Ich verwende keine Windows-Authentifizierung.

Voraussetzungen

Um eine Verbindung von Ubuntu herzustellen, ist es ein wenig ( nur ein bisschen ) zusätzliche Arbeit. Zuerst öffne ich auf meinem Windows 10-Computer ein Powershell-Terminal und gebe Folgendes ein

nslookup <server name here>

und es gibt so etwas wie zurück

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

Der Name und die Adresse des Servers sind statisch, sodass die oben genannten Informationen nur einmal pro Server ausgeführt werden müssen, auf den Sie zugreifen möchten.

DataGrip

Dann springe ich auf meinen Linux-Computer und öffne DataGrip. Für die HostEingabe von <server's address>Port: 1433 (dies ist die Standardeinstellung für MS SQL Server). Die URL sollte ungefähr so ​​aussehen:

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

Wenn Sie auf klicken Test Connection, werden Sie zur Anmeldung aufgefordert, falls Sie diese noch nicht hinzugefügt haben. Und das war's für DataGrip!

DataGrip verfügt außerdem über das folgende Blog, das für neue Benutzer hilfreich sein kann: Verbinden von DataGrip mit MS SQL Server

SQL Electron

Wenn Sie DataGrip nicht kaufen möchten, können Sie SQL Electron verwenden. Die Schritte sind ähnlich. Öffnen Sie SQL Electron, klicken Sie auf Hinzufügen um einen neuen Server hinzuzufügen, und für Server AddressTyp in <server's address>, Port: 1433, und schließlich Ihre Zugangsdaten. Und das ist es!

Jon
quelle
0

So stellen Sie eine Verbindung zu einer MSSQL-Instanz her, die auf einem Remote-Server ausgeführt wird:

Befolgen Sie die entsprechenden Schritte in diesem Artikel https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -server-2017

HINWEIS: Um die Tests abzuschließen, müssen Sie noch einige weitere Schritte ausführen: Bearbeiten Sie /etc/odbc.ini und fügen Sie Folgendes hinzu:

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

Führen Sie im Terminal Folgendes aus, um den Test durchzuführen:

isql -v MSSQL [Benutzername] [Passwort]

Sie sollten eine "verbundene" Antwort sehen.

Wenn Sie Probleme haben, überprüfen Sie, ob die Ports auf Ihrem Linux- und Windows-Server geöffnet sind!

Atron Seige
quelle