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" с самого начала.

Тем не менее, ничего не изменилось.

mertyildiran
источник
Вы создаете запись в файле 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
Тревор Кларк
Я фактически использовал IP-адрес сервера MSSQL «tsql -S 77.223.141.204 -U бекон»
mertyildiran
не будет ли это localhost тогда? потому что вы не можете подключиться к своему внешнему IP.
Тревор Кларк
Да, это внешний IP не возможно получить доступ через этот метод? Что я должен делать?
mertyildiran
0

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

vembutech
источник
после "tsql -S 192.168.0.1 -U devuser": соединение закрыто внешним хостом. Что я должен делать?
mertyildiran
Можете ли вы проверить, открыт ли порт 1433 на сервере MSSQL. Вам необходимо убедиться, что вы можете получить доступ к порту 1433 вашего сервера MSSQL. Если он не открыт, пожалуйста, откройте порт, а затем проверьте
vembutech
0

Я должен был сделать это для Ubuntu 14.04 и 17.04, оба LTS 64-bit. Вероятно, работает для более поздних версий.

Установите 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

И это было все.

ASalazar
источник
libtdsodbc.so и libtdsS.so также можно найти в / usr / lib / x86_64-linux-gnu / odbc /
Strixy
0

Чтобы ответить на вопрос, подразумеваемый:

Мне нужен простой и полный учебник для создания соединения MSSQL из Ubuntu

... и игнорируя все настройки FreeTDS.

Используйте mssql-cli ( установка , использование ).

oeuftete
источник
0

Я работаю в компании, которая интенсивно использует продукты Microsoft. Однако я предпочитаю работать на машине с Linux (Ubuntu). В частности, я использую Ubuntu 16.04 LTS .

Я использую JetBrains DataGrip или SQL Electron в качестве графического интерфейса SQL. Для DataGrip потребуется Microsoft JDBC Driver для SQL Server, на который вам нужно указать вручную при первом открытии DataGrip. Я вставил это /usr/share/java/, но где угодно будет работать.

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

Предпосылки

Для подключения из Ubuntu это немного ( совсем немного ) дополнительной работы. Сначала на компьютере с Windows 10 я открываю терминал Powershell и набираю

nslookup <server name here>

и он возвращает что-то вроде

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

Имя и адрес сервера будут статическими, поэтому вышеперечисленное потребуется для запуска только один раз для каждого сервера, к которому вы пытаетесь получить доступ.

DataGrip

Затем я запрыгиваю на свой компьютер с Linux и открываю DataGrip. Для Hostввода I <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>Порт: 1433» и, наконец, свои учетные данные для входа. Вот и все!

Джон
источник
0

Чтобы подключиться к экземпляру MSSQL, запущенному на удаленном сервере:

Выполните соответствующие шаги в этой статье https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -server-2017

ПРИМЕЧАНИЕ. Чтобы завершить тесты, вам нужно сделать еще несколько вещей: Отредактируйте /etc/odbc.ini и добавьте следующее:

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

Для выполнения теста выполните в терминале следующее:

isql -v MSSQL [имя пользователя] [пароль]

Вы должны увидеть «связанный» ответ.

Если вы боретесь, убедитесь, что порты на вашем сервере Linux и Windows открыты!

Атрон Сейдж
источник