การเชื่อมต่อ 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

ใช้ไอพีท้องถิ่นของคุณ
Trevor Clarke

ฉันใช้จริง "tsql -S 77.223.141.204 -U เบคอน" ที่อยู่ IP ของเซิร์ฟเวอร์ MSSQL
mertyildiran

มันจะไม่ localhost แล้ว? เพราะคุณไม่สามารถเชื่อมต่อกับ 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) และ 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

ฉันทำงานที่ บริษัท ที่ใช้ผลิตภัณฑ์ของ Microsoft เป็นอย่างมาก อย่างไรก็ตามฉันชอบทำงานกับเครื่อง Linux (Ubuntu) โดยเฉพาะผมใช้Ubuntu 16.04 LTS

ฉันใช้DataBripของ JetBrains หรือSQL Electronเป็น SQL GUIs DataGrip จะต้องการไดรเวอร์ Microsoft JDBC สำหรับ SQL Server ซึ่งคุณต้องชี้ไปที่ด้วยตนเองเมื่อคุณเปิด DataGrip เป็นครั้งแรก ฉันใส่สิ่งนี้ไว้/usr/share/java/แต่ทุกที่จะทำงานได้

การเชื่อมต่อนั้นง่ายบนแล็ปท็อป Windows 10 ของฉัน ฉันเพียงแค่เปิด SQL Server Management Studio และใช้ข้อมูลประจำตัวของฉันเพื่อเข้าสู่ระบบ (ชื่อผู้ใช้ + รหัสผ่าน); ฉันไม่ได้ใช้ Windows Authentication

ข้อกำหนดเบื้องต้น

เพื่อเชื่อมต่อจาก 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

หากคุณไม่ต้องการซื้อ 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 ของคุณเปิดอยู่!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.