Połączenie MSSQL z Ubuntu

10

Potrzebuję łatwego i kompletnego samouczka do tworzenia połączenia MSSQL z Ubuntu.

Myślę, że zainstalowałem FreeTDS i UnixODBC, ale konfiguracje są bardzo skomplikowane, nie zrozumiałem problemu.

Wykonałem ten samouczek: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Ale zawiodłem.

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

Edytować:

Przed tą edycją „/etc/odbcinst.ini” i „/etc/odbc.ini” było puste.

Dodałem te linie do /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

Dodałem te linie do /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

Od samego początku nie wprowadzałem żadnych zmian na „/etc/freetds/freetds.conf”.

Jednak nic się nie zmieniło.

mertyildiran
źródło
utworzyłeś wpis w pliku ODBC (/etc/odbc.ini)? a także sprawdź dyski w pliku „/etc/odbcinst.ini”
vembutech
Oba te pliki są puste, co powinienem zrobić dokładnie? Czy możesz udostępnić link lub kilka szczegółów?
mertyildiran
Uważam, że przegapiłeś krok „Konfiguruj UnixODBC” dostępny w linku, który podążałeś. Zaktualizuj te dwa pliki jak w adresie URL: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/... i sprawdź, czy problem został rozwiązany.
vembutech
Nic się nie zmieniło
Zedytowałem

Odpowiedzi:

11

Oto instrukcje krok po kroku (tutaj) :

Najpierw zainstaluj unixODBC:

sudo apt-get install unixodbc unixodbc-dev

Zainstalowałem również następujące (być może konieczne) pakiety:

sudo apt-get install tdsodbc php5-odbc

Następnie pobierz, rozpakuj, skompiluj i zainstaluj FreeTDS (ostrzeżenie, adres URL może ulec zmianie):

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

Próba połączenia przez Telnet z instancją SQL Server:

telnet 192.168.0.1 1433

Użyj narzędzia tsql, aby przetestować połączenie:

tsql -S 192.168.0.1 -U devuser

Powinno to poprosić Cię o hasło, po którym możesz mieć nadzieję, że nie zobaczysz tego pięknego znaku:

1>

Jeśli to zadziałało, polecam zorganizowanie imprezy (kodowania). Następnym krokiem jest konfiguracja. Otwórz plik konfiguracyjny FreeTDS. /usr/local/etc/freetds.conf

Dodaj następujący wpis na dole pliku. Tworzymy nazwę źródła danych (DSN) o nazwie „MSSQL”.

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

Teraz otwórz plik konfiguracyjny ODBC: /usr/local/etc/odbcinst.ini

I na końcu dodaj następujący wpis sterownika MSSQL (FreeTDS):

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

Następnie ustaw DSN w ODBC w pliku odbc.ini tutaj /usr/local/etc/odbc.ini Dodając ten bit do pliku:

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

Przetestuj połączenie za pomocą narzędzia isql:

isql -v MSSQL devuser 'devpass'

Jeśli zobaczysz komunikat „Połączony!” jesteś złoty, gratulacje! Jeśli nie, naprawdę mi przykro; patrz poniżej, gdzie są zasoby, które mogą pomóc.

Teraz zrestartuj Apache i przetestuj go z PHP używając „MSSQL” jako DSN. Jeśli coś nie działa, możesz spróbować zainstalować jeden lub wszystkie z tych pakietów: mdbtools libmdbodbc libmdbtools mdbtools-gmdb

Trevor Clarke
źródło
po „tsql -S 192.168.0.1 -U devuser”: Połączenie zamknięte przez zagraniczny host. Co powinienem zrobić?
mertyildiran
używam ci lokalnego ip
Trevor Clarke
Użyłem właściwie adresu IP serwera MSSQL „tsql -S 77.223.141.204 -U beacon”
mertyildiran
czy nie byłby to więc localhost? ponieważ nie możesz połączyć się z własnym zewnętrznym adresem IP.
Trevor Clarke
Tak, czy to zewnętrzny adres IP nie jest dostępny za pomocą tej metody? Co powinienem zrobić?
mertyildiran
0

Mam nadzieję, że skopiowałeś zawartość linku do pliku. Musisz zaktualizować dane swojego serwera SQL w pliku „/etc/odbc.ini”. Możesz polecić link http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/

vembutech
źródło
po „tsql -S 192.168.0.1 -U devuser”: Połączenie zamknięte przez zagraniczny host. Co powinienem zrobić?
mertyildiran
Czy możesz sprawdzić, czy port 1433 jest otwarty na serwerze MSSQL. Musisz upewnić się, że masz dostęp do portu 1433 serwera MSSQL. Jeśli nie jest otwarty, otwórz port, a następnie sprawdź
vembutech
0

Musiałem to zrobić dla Ubuntu 14.04 i 17.04, zarówno LTS 64-bit. Prawdopodobnie działa w późniejszych wersjach.

Zainstaluj unixodbc (połączenia ODBC), freetds (połączenia z SQL Server) i tdsodbc (most między dwoma poprzednimi)

sudo apt install unixodbc freetds-bin tdsodbc

Dodaj sterowniki ODBC do /etc/odbcinst.ini (powinno być puste)

[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

Dodaj swoje DSN do /etc/odbc.ini (powinno być również puste)

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

I to wszystko.

ASalazar
źródło
libtdsodbc.so i libtdsS.so można również znaleźć w / usr / lib / x86_64-linux-gnu / odbc /
Strixy 19.09.17
0

Aby odpowiedzieć na pytanie implikowane przez:

Potrzebuję łatwego i kompletnego samouczka do tworzenia połączenia MSSQL z Ubuntu

... i ignorując wszystkie rzeczy związane z konfiguracją FreeTDS.

Użyj mssql-cli ( instalacja , użycie ).

oeuftete
źródło
0

Pracuję w firmie, która intensywnie korzysta z produktów Microsoft. Wolę jednak pracować na komputerze z systemem Linux (Ubuntu). W szczególności używam Ubuntu 16.04 LTS .

Używam DataBrip JetBrains lub SQL Electron jako GUI SQL. DataGrip będzie wymagał sterownika Microsoft JDBC dla programu SQL Server, który należy wskazać ręcznie przy pierwszym otwarciu DataGrip. Wkładam to /usr/share/java/, ale wszędzie będzie działać.

Połączenie jest proste na moim laptopie z systemem Windows 10. Po prostu otwieram SQL Server Management Studio i używam moich danych logowania do logowania (nazwa użytkownika + hasło); Nie używam uwierzytelniania systemu Windows.

Wymagania wstępne

Aby połączyć się z Ubuntu, jest to trochę ( tylko trochę ) dodatkowa praca. Najpierw na moim komputerze z systemem Windows 10 otwieram terminal Powershell i wpisuję następujące polecenie

nslookup <server name here>

i zwraca coś takiego

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

Nazwa i adres serwera będą statyczne, więc powyższe będzie potrzebne tylko raz na serwer, do którego próbujesz uzyskać dostęp.

DataGrip

Następnie wskakuję na maszynę z systemem Linux i otwieram DataGrip. Dla Hostwpisywania I <server's address>, Port: 1433 (jest to ustawienie domyślne dla MS SQL Server). Adres URL powinien wyglądać mniej więcej tak:

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

Jeśli klikniesz Test Connection, wyświetli się monit o podanie danych logowania, jeśli jeszcze go nie dodałeś. I to wszystko dla DataGrip!

DataGrip ma również następujący blog, który może być pomocny dla nowych użytkowników: Łączenie DataGrip z MS SQL Server

SQL Electron

Jeśli nie chcesz kupować DataGrip, możesz użyć SQL Electron. Kroki są podobne. Otwórz SQL Electron, kliknij dodaj, aby dodać nowy serwer, a następnie Server Addresswpisz <server's address>Port: 1433, a na koniec poświadczenia logowania. I to wszystko!

Jon
źródło
0

Aby połączyć się z instancją MSSQL uruchomioną na zdalnym serwerze:

Wykonaj odpowiednie kroki opisane w tym artykule https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-ke words-and- data- source- names- dsns? view= sql -server-2017

UWAGA: Aby ukończyć testy, musisz zrobić jeszcze kilka rzeczy: Edytuj /etc/odbc.ini i dodaj:

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

Aby wykonać test, wykonaj następujące czynności w terminalu:

isql -v MSSQL [nazwa użytkownika] [hasło]

Powinieneś zobaczyć odpowiedź „połączoną”.

Jeśli masz problemy, sprawdź, czy porty na serwerze Linux i Windows są otwarte!

Atron Seige
źródło