З'єднання MSSQL від Ubuntu


10

Мені потрібен простий і повний підручник для створення MSSQL-з'єднання з Ubuntu.

Я думаю, що я встановив FreeTDS і UnixODBC, але конфігурації дуже складні, я не зрозумів проблеми.

Я дотримувався цього підручника: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Але я провалився.

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

Редагувати:

Перед цим редагуванням "/etc/odbcinst.ini" та "/etc/odbc.ini" були порожніми.

Я додав ці рядки до /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

Я додав ці рядки до /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

Я не вносив жодних змін у "/etc/freetds/freetds.conf" з самого початку.

Все-таки нічого не змінилося.


Ви створили запис у файлі ODBC (/etc/odbc.ini)? а також перевірити накопичувачі у файлі "/etc/odbcinst.ini"
vembutech

Обидва ці файли порожні, що робити саме? Чи можете ви поділитися посиланням чи деякими деталями?
mertyildiran

Я вважаю, що ви пропустили крок "Налаштувати UnixODBC", доступний за посиланням, яке ви перейшли. Будь ласка, оновіть ці два файли, як-от у URL: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/… та перевірте, чи вирішена проблема.
vembutech

Нічого не змінилося. Я відредагував питання, яке ви бачите вище
mertyildiran

Відповіді:


11

Ось покрокові інструкції (знайдені тут) :

Спочатку встановіть unixODBC:

sudo apt-get install unixodbc unixodbc-dev

Я також встановив такі (можливо необхідні) пакети:

sudo apt-get install tdsodbc php5-odbc

Потім завантажте, зніміть, скапілюйте та встановіть FreeTDS (попередження, URL може змінитися):

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

Спробуйте підключитися через Telnet до екземпляра SQL Server:

telnet 192.168.0.1 1433

Використовуйте інструмент tsql для перевірки з'єднання:

tsql -S 192.168.0.1 -U devuser

Це повинно запропонувати вам пароль, після чого ви можете сподіватися проти надії побачити цей прекрасний знак:

1>

Якщо це спрацювало, рекомендую кинути (кодування) учасника. Далі - налаштування. Відкрийте конфігураційний файл FreeTDS. /usr/local/etc/freetds.conf

Додайте наступний запис у нижній частині файлу. Ми встановлюємо ім'я джерела даних (DSN) під назвою "MSSQL".

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

Тепер відкрийте файл конфігурації ODBC: /usr/local/etc/odbcinst.ini

І додайте наступний запис драйвера MSSQL (FreeTDS) наприкінці:

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

Потім, нарешті, встановіть DSN в ODBC у файлі odbc.ini тут /usr/local/etc/odbc.ini Додавши цей біт у файл:

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

Перевірте з'єднання за допомогою інструмента isql:

isql -v MSSQL devuser 'devpass'

Якщо ви бачите "Підключено!" ти золотий, вітаю! Якщо ні, я щиро шкодую; дивіться нижче, де є деякі ресурси, які можуть допомогти.

Тепер перезапустіть Apache і протестуйте його з PHP, використовуючи 'MSSQL' як DSN. Якщо щось не працює, ви можете спробувати встановити будь-який або всі ці пакунки: mdbtools libmdbodbc libmdbtools mdbtools-gmdb


після "tsql -S 192.168.0.1 -U devuser": З'єднання закрите іноземним хостом. Що я повинен зробити?
mertyildiran

використовуйте локальний ip
Тревор Кларк

Я використовував фактично "tsql -S 77.223.141.204 -U bacon" IP-адресу сервера MSSQL
mertyildiran

не було б тоді місцевим господарем? тому що ви не можете підключитися до власного зовнішнього ip.
Тревор Кларк

Так, це зовнішній IP не доступний за допомогою цього методу? Що я повинен зробити?
mertyildiran


0

Сподіваємось, що ви скопіювали вміст у посилання на файл. Потрібно оновити реквізити свого SQL-сервера у файлі "/etc/odbc.ini". Ви можете посилатися на посилання http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/


після "tsql -S 192.168.0.1 -U devuser": З'єднання закрите іноземним хостом. Що я повинен зробити?
mertyildiran

Чи можете ви перевірити, чи відкритий порт 1433 на сервері MSSQL. Вам потрібно переконатися, що ви можете отримати доступ до порту 1433 вашого MSSQL-сервера. Якщо це не відкрито, будь ласка, відкрийте порт, а потім перевірте
vembutech

0

Мені довелося це зробити для Ubuntu 14.04 та 17.04, обидва LTS 64-розрядні. Ймовірно, працює для пізніших версій.

Встановіть unixodbc (ODBC-з'єднання), freetds (з'єднання SQL Server) та tdsodbc (міст між двома попередніми)

sudo apt install unixodbc freetds-bin tdsodbc

Додайте драйвери ODBC до /etc/odbcinst.ini (має бути порожнім)

[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

Додайте свої DSN до /etc/odbc.ini (також має бути порожнім)

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

І це було все.


libtdsodbc.so та libtdsS.so також можна знайти в / usr / lib / x86_64-linux-gnu / odbc /
Strixy

0

Щоб відповісти на запитання, яке має на увазі:

Мені потрібен простий і повний підручник для створення MSSQL-з'єднання з Ubuntu

... і ігнорування всіх елементів налаштування FreeTDS.

Використовуйте mssql-cli ( встановлення , використання ).


0

Я працюю в компанії, яка активно використовує продукти Microsoft. Однак я вважаю за краще працювати на машині Linux (Ubuntu). Зокрема, я використовую Ubuntu 16.04 LTS .

Я використовую DataGrip JetBrains або SQL Electron як SQL GUI. DataGrip потребує драйвера Microsoft JDBC для SQL Server, на який потрібно вказувати вручну, коли ви відкриєте DataGrip вперше. Я поклав це /usr/share/java/, але де завгодно буде працювати.

Підключення просте на моєму ноутбуці Windows 10. Я просто відкриваю студію управління SQL Server і використовую свої облікові дані для входу (ім’я користувача + пароль); Я не використовую автентифікацію Windows.

Передумови

Для того, щоб підключитися з Ubuntu, потрібно трохи ( просто небагато ) додаткової роботи. По-перше, на своїй машині Windows 10 я відкриваю термінал Powershell і набираю наступне

nslookup <server name here>

і це повертає щось подібне

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

Ім'я та адреса сервера будуть статичними, тому вищезазначене потрібно буде запускати лише один раз на кожному сервері, до якого ви намагаєтесь отримати доступ.

DataGrip

Потім я стрибаю на свою машину Linux і відкриваю DataGrip. Для HostI типу <server's address>входить порт: 1433 (це за замовчуванням для MS SQL Server). URL-адреса має виглядати приблизно так,

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

Якщо ви натиснете на Test Connectionнього, воно запропонує вам інформацію про вхід, якщо ви ще цього не додали. І це все для DataGrip!

У DataGrip також є такий блог, який може бути корисним для нових користувачів: Підключення DataGrip до MS SQL Server

SQL Electron

Якщо ви не хочете купувати DataGrip, ви можете використовувати SQL Electron. Етапи схожі. Відкрийте SQL Electron, натисніть кнопку Додати, щоб додати новий сервер, а для Server Addressвведення <server's address>Port: 1433 і, нарешті, ваші облікові дані для входу. І це все!


0

Для підключення до екземпляра MSSQL, який працює на віддаленому сервері:

Виконайте відповідні кроки в цій статті https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -сервер-2017

ПРИМІТКА. Щоб виконати тести, вам потрібно зробити ще кілька речей: Edit /etc/odbc.ini та додати наступне:

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

Для виконання тесту виконайте наступне в терміналі:

isql -v MSSQL [ім'я користувача] [пароль]

Ви повинні побачити "підключену" відповідь.

Якщо ви боретеся, перевірте, чи порти на вашому сервері Linux та Windows відкриті!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.