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.


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


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/


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.


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 ).


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!


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!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.