Koneksi MSSQL dari Ubuntu

10

Saya memerlukan tutorial yang mudah dan lengkap untuk membuat koneksi MSSQL dari Ubuntu.

Saya pikir saya menginstal FreeTDS dan UnixODBC tetapi konfigurasi sangat rumit saya tidak mengerti masalah ini.

Saya mengikuti tutorial ini: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Tetapi saya gagal.

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

Edit:

Sebelum ini edit "/etc/odbcinst.ini" dan "/etc/odbc.ini" kosong.

Saya menambahkan baris-baris ini ke /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

Saya menambahkan baris ini ke /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

Saya tidak melakukan perubahan apa pun pada "/etc/freetds/freetds.conf" sejak awal.

Tetap saja, tidak ada yang berubah.

mertyildiran
sumber
sudahkah Anda membuat entri pada file ODBC (/etc/odbc.ini)? dan juga memeriksa drive dalam file "/etc/odbcinst.ini"
vembutech
Kedua file ini kosong apa yang harus saya lakukan sebenarnya? Bisakah Anda membagikan tautan atau detail?
mertyildiran
Saya yakin Anda telah melewatkan langkah "Konfigurasikan UnixODBC" yang tersedia di tautan yang Anda ikuti. Perbarui kedua file seperti di URL: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/… dan periksa apakah masalah teratasi.
vembutech
Tidak ada yang berubah. Saya mengedit pertanyaan yang dapat Anda lihat di atas
mertyildiran

Jawaban:

11

Berikut adalah petunjuk langkah demi langkah (ditemukan di sini) :

Pertama, instal unixODBC:

sudo apt-get install unixodbc unixodbc-dev

Saya juga menginstal paket-paket berikut (mungkin perlu):

sudo apt-get install tdsodbc php5-odbc

Kemudian unduh, untar, kompilasi, dan instal FreeTDS (peringatan, URL dapat berubah):

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

Coba koneksi melalui Telnet ke instance SQL Server Anda:

telnet 192.168.0.1 1433

Gunakan alat tsql untuk menguji koneksi:

tsql -S 192.168.0.1 -U devuser

Ini akan meminta Anda untuk kata sandi, setelah itu Anda bisa berharap terhadap harapan untuk melihat tanda yang indah ini:

1>

Jika itu berhasil, saya sarankan mengadakan pesta (coding). Selanjutnya adalah beberapa konfigurasi. Buka file konfigurasi FreeTDS. /usr/local/etc/freetds.conf

Tambahkan entri berikut ke bagian bawah file. Kami sedang menyiapkan nama sumber data (DSN) yang disebut 'MSSQL'.

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

Sekarang buka file konfigurasi ODBC: /usr/local/etc/odbcinst.ini

Dan tambahkan entri driver MSSQL berikut (FreeTDS) di akhir:

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

Kemudian, akhirnya, atur DSN dalam ODBC dalam file odbc.ini di sini /usr/local/etc/odbc.ini Dengan menambahkan bit ini ke file:

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

Uji koneksi menggunakan alat isql:

isql -v MSSQL devuser 'devpass'

Jika Anda melihat "Terhubung!" kamu emas, selamat! Jika tidak, saya benar-benar minta maaf; lihat di bawah ini di mana ada beberapa sumber daya yang dapat membantu.

Sekarang restart Apache dan coba dari PHP menggunakan 'MSSQL' sebagai DSN. Jika ada yang tidak berhasil, Anda dapat mencoba menginstal salah satu atau semua paket ini: mdbtools libmdbodbc libmdbtools mdbtools-gmdb

Trevor Clarke
sumber
setelah "tsql -S 192.168.0.1 -U devuser": Koneksi ditutup oleh host asing. Apa yang harus saya lakukan?
mertyildiran
gunakan ip lokal Anda
Trevor Clarke
Saya menggunakan sebenarnya "tsql -S 77.223.141.204 -U bacon" alamat IP server MSSQL
mertyildiran
bukankah itu localhost? karena Anda tidak dapat terhubung ke ip eksternal Anda sendiri.
Trevor Clarke
Ya itu IP eksternal yang tidak dapat diakses melalui metode ini? Apa yang harus saya lakukan?
mertyildiran
0

Semoga Anda telah menyalin konten di tautan ke file. Anda perlu memperbarui rincian server SQL Anda di file "/etc/odbc.ini". Anda dapat merujuk tautannya http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/

vembutech
sumber
setelah "tsql -S 192.168.0.1 -U devuser": Koneksi ditutup oleh host asing. Apa yang harus saya lakukan?
mertyildiran
Bisakah Anda memeriksa apakah port 1433 terbuka di server MSSQL. Anda perlu memastikan Anda dapat mengakses port 1433 dari server MSSQL Anda. Jika tidak terbuka silakan buka port dan kemudian periksa
vembutech
0

Saya harus melakukan ini untuk Ubuntu 14.04 dan 17.04, keduanya LTS 64-bit. Mungkin berfungsi untuk versi yang lebih baru.

Instal unixodbc (koneksi ODBC), freetds (koneksi SQL Server) dan tdsodbc (jembatan antara dua yang sebelumnya)

sudo apt install unixodbc freetds-bin tdsodbc

Tambahkan driver ODBC Anda ke /etc/odbcinst.ini (harus kosong)

[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

Tambahkan DSN Anda ke /etc/odbc.ini (juga harus kosong)

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

Dan itu saja.

ASalazar
sumber
libtdsodbc.so dan libtdsS.so juga dapat ditemukan di / usr / lib / x86_64-linux-gnu / odbc /
Strixy
0

Untuk menjawab pertanyaan tersirat oleh:

Saya memerlukan tutorial yang mudah dan lengkap untuk membuat koneksi MSSQL dari Ubuntu

... dan mengabaikan semua hal pengaturan FreeTDS.

Gunakan mssql-cli ( install , penggunaan ).

oeuftete
sumber
0

Saya bekerja di perusahaan yang banyak menggunakan produk Microsoft. Namun, saya lebih suka bekerja pada mesin Linux (Ubuntu). Secara khusus, saya menggunakan Ubuntu 16.04 LTS .

Saya menggunakan JetGrains DataGrip atau SQL Electron sebagai SQL GUI. DataGrip akan memerlukan Microsoft JDBC Driver untuk SQL Server yang harus Anda tunjuk secara manual saat Anda membuka DataGrip untuk pertama kalinya. Saya memasukkan ini /usr/share/java/, tetapi di mana saja akan berhasil.

Menghubungkan itu mudah di laptop Windows 10 saya. Saya cukup membuka SQL Server Management Studio, dan menggunakan kredensial saya untuk masuk (nama pengguna + kata sandi); Saya tidak menggunakan Otentikasi Windows.

Prasyarat

Untuk dapat terhubung dari Ubuntu, ini merupakan pekerjaan ekstra ( hanya sedikit ). Pertama, pada mesin Windows 10 saya, saya membuka terminal Powershell, dan ketik berikut ini

nslookup <server name here>

dan mengembalikan sesuatu seperti

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

Nama dan alamat server akan menjadi statis, sehingga di atas hanya akan diperlukan untuk dijalankan sekali per server yang Anda coba akses.

DataGrip

Lalu, saya melompat ke mesin Linux saya dan membuka DataGrip. Untuk Hosttipe I <server's address>, Port: 1433 (ini adalah default untuk MS SQL Server). URL akan terlihat seperti,

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

Jika Anda mengklik Test Connection, itu akan meminta Anda untuk informasi login jika Anda belum menambahkannya. Dan itu untuk DataGrip!

DataGrip juga memiliki blog berikut, yang mungkin bermanfaat bagi pengguna baru: Menghubungkan DataGrip ke MS SQL Server

SQL Electron

Jika Anda tidak ingin membeli DataGrip, Anda dapat menggunakan SQL Electron. Langkah-langkahnya mirip. Buka SQL Electron, klik add untuk menambahkan server baru, dan untuk Server Addressmengetik <server's address>, Port: 1433, dan akhirnya kredensial login Anda. DAN ITULAH!

Jon
sumber
0

Untuk terhubung ke instance MSSQL yang berjalan di server jauh:

Ikuti langkah-langkah yang berlaku dalam artikel ini https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -server-2017

CATATAN: Untuk menyelesaikan tes, Anda harus melakukan beberapa hal lagi: Edit /etc/odbc.ini dan tambahkan yang berikut:

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

Untuk melakukan tes, jalankan terminal berikut di:

isql -v MSSQL [nama pengguna] [kata sandi]

Anda akan melihat respons "terhubung".

Jika Anda kesulitan, periksa apakah port di Linux dan server Windows Anda terbuka!

Atron Seige
sumber