Kết nối MSSQL từ Ubuntu


10

Tôi cần một hướng dẫn dễ dàng và đầy đủ để tạo kết nối MSSQL từ Ubuntu.

Tôi nghĩ rằng tôi đã cài đặt FreeTDS và UnixODBC nhưng cấu hình rất phức tạp Tôi không hiểu vấn đề.

Tôi đã làm theo hướng dẫn này: https://github.com/rails-sqlserver/activerecord-sqlserver-ad CHƯƠNG / wiki / Pl platform-Installation---Ubfox

Nhưng tôi đã thất bại.

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

Biên tập:

Trước khi chỉnh sửa này "/etc/odbcinst.ini" và "/etc/odbc.ini" trống.

Tôi đã thêm những dòng này vào /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

Tôi đã thêm những dòng này vào /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

Tôi đã không thực hiện bất kỳ thay đổi nào trên "/etc/freetds/freetds.conf" kể từ khi bắt đầu.

Tuy nhiên, không có gì thay đổi.


Bạn đã tạo mục nhập trên tệp ODBC (/etc/odbc.ini) chưa? và cũng kiểm tra các ổ đĩa trong tệp "/etc/odbcinst.ini"
vembutech

Cả hai tập tin này đều trống, tôi nên làm gì chính xác? Bạn có thể chia sẻ một liên kết hoặc một số chi tiết?
mertyildiran

Tôi tin rằng bạn đã bỏ lỡ bước "Cấu hình UnixODBC" có sẵn trong liên kết mà bạn đã theo dõi. Vui lòng cập nhật hai tệp như trong URL: github.com/rails-sqlserver/activerecord-sqlserver-ad CHƯƠNG / wiki / và kiểm tra xem sự cố đã được giải quyết chưa.
vembutech

Không có gì thay đổi Tôi đã chỉnh sửa câu hỏi bạn có thể thấy ở trên
mertyildiran

Câu trả lời:


11

Dưới đây là hướng dẫn từng bước (tìm thấy ở đây) :

Đầu tiên, cài đặt unixODBC:

sudo apt-get install unixodbc unixodbc-dev

Tôi cũng đã cài đặt các gói (có lẽ cần thiết) sau đây:

sudo apt-get install tdsodbc php5-odbc

Sau đó tải xuống, gỡ bỏ, biên dịch và cài đặt FreeTDS (cảnh báo, URL có thể thay đổi):

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

Cố gắng kết nối qua Telnet đến phiên bản SQL Server của bạn:

telnet 192.168.0.1 1433

Sử dụng công cụ tsql để kiểm tra kết nối:

tsql -S 192.168.0.1 -U devuser

Điều này sẽ nhắc bạn nhập mật khẩu, sau đó bạn có thể hy vọng chống lại hy vọng để thấy dấu hiệu đẹp này:

1>

Nếu nó hoạt động, tôi khuyên bạn nên ném một bữa tiệc (mã hóa). Tiếp theo là một số cấu hình. Mở tệp cấu hình FreeTDS. /usr/local/etc/freetds.conf

Thêm mục sau vào dưới cùng của tập tin. Chúng tôi đang thiết lập một tên nguồn dữ liệu (DSN) được gọi là 'MSSQL'.

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

Bây giờ hãy mở tệp cấu hình ODBC: /usr/local/etc/odbcinst.ini

Và thêm mục nhập trình điều khiển MSSQL (FreeTDS) sau vào cuối:

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

Sau đó, cuối cùng, thiết lập DSN trong ODBC trong tệp odbc.ini tại đây /usr/local/etc/odbc.ini Bằng cách thêm bit này vào tệp:

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

Kiểm tra kết nối bằng công cụ isql:

isql -v MSSQL devuser 'devpass'

Nếu bạn thấy thì được kết nối! bạn là vàng, xin chúc mừng! Nếu không, tôi thực sự xin lỗi; xem bên dưới nơi có một số tài nguyên có thể giúp đỡ.

Bây giờ khởi động lại Apache và kiểm tra nó từ PHP bằng cách sử dụng 'MSSQL' làm DSN. Nếu một cái gì đó không hoạt động, bạn có thể thử cài đặt bất kỳ hoặc tất cả các gói sau: mdbtools libmdbodbc libmdbtools mdbtools-gmdb


sau "tsql -S 192.168.0.1 -U devuser": Kết nối được đóng bởi máy chủ nước ngoài. Tôi nên làm gì?
mertyildiran

sử dụng ip cục bộ của bạn
Trevor Clarke

Tôi thực sự đã sử dụng "tsql -S 77.223.141.204 -U thịt xông khói" Địa chỉ IP của máy chủ MSSQL
mertyildiran

nó sẽ không phải là localhost chứ? bởi vì bạn không thể kết nối với ip bên ngoài của riêng bạn.
Trevor Clarke

Có, đó là một IP bên ngoài không thể truy cập thông qua phương pháp này? Tôi nên làm gì?
mertyildiran


0

Hy vọng bạn đã sao chép nội dung trong liên kết đến tập tin. Bạn cần cập nhật chi tiết máy chủ SQL của mình trong tệp "/etc/odbc.ini". Bạn có thể tham khảo liên kết http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubfox/


sau "tsql -S 192.168.0.1 -U devuser": Kết nối được đóng bởi máy chủ nước ngoài. Tôi nên làm gì?
mertyildiran

Bạn có thể kiểm tra xem cổng 1433 có mở trong máy chủ MSSQL không. Bạn cần đảm bảo rằng bạn có thể truy cập vào cổng 1433 của máy chủ MSSQL của bạn. Nếu nó không mở, vui lòng mở cổng và sau đó kiểm tra
vembutech

0

Tôi đã phải làm điều này cho Ubuntu 14.04 và 17.04, cả LTS 64-bit. Có lẽ hoạt động cho các phiên bản sau.

Cài đặt unixodbc (kết nối ODBC), freetds (kết nối SQL Server) và tdsodbc (cầu nối giữa hai cái trước)

sudo apt install unixodbc freetds-bin tdsodbc

Thêm trình điều khiển ODBC của bạn vào /etc/odbcinst.ini (nên trống)

[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

Thêm DSN của bạn vào /etc/odbc.ini (cũng sẽ trống)

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

Và đó là tất cả.


libtdsodbc.so và libtdsS.so cũng có thể được tìm thấy trong / usr / lib / x86_64-linux-gnu / odbc /
Strixy

0

Để trả lời câu hỏi ngụ ý:

Tôi cần một hướng dẫn dễ dàng và đầy đủ để tạo kết nối MSSQL từ Ubuntu

... và bỏ qua tất cả các công cụ thiết lập FreeTDS.

Sử dụng mssql-cli ( cài đặt , sử dụng ).


0

Tôi làm việc tại một công ty sử dụng nhiều sản phẩm của Microsoft. Tuy nhiên, tôi thích làm việc trên máy Linux (Ubuntu). Cụ thể, tôi sử dụng Ubuntu 16.04 LTS .

Tôi sử dụng DataGrip hoặc SQL Electron của JetBrains làm GUI GUI. DataGrip sẽ yêu cầu Microsoft JDBC Driver cho SQL Server mà bạn cần trỏ đến thủ công khi bạn mở DataGrip lần đầu tiên. Tôi đặt cái này vào /usr/share/java/, nhưng bất cứ nơi nào sẽ làm việc.

Kết nối rất đơn giản trên máy tính xách tay Windows 10 của tôi. Tôi chỉ cần mở SQL Server Management Studio và sử dụng thông tin đăng nhập của mình để đăng nhập (tên người dùng + mật khẩu); Tôi không sử dụng Windows xác thực.

Điều kiện tiên quyết

Để kết nối từ Ubuntu, đó là một công việc phụ ( chỉ một chút thôi ). Đầu tiên, trên máy Windows 10 của tôi, tôi mở một thiết bị đầu cuối Powershell và nhập vào phần sau đây

nslookup <server name here>

và nó trả về một cái gì đó như

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

Tên và địa chỉ của máy chủ sẽ ở trạng thái tĩnh, do đó, chỉ cần ở trên để chạy một lần cho mỗi máy chủ mà bạn cố gắng truy cập.

DataGrip

Sau đó, tôi nhảy lên máy Linux của mình và mở DataGrip. Đối với Hostkiểu nhập I <server's address>, Cổng: 1433 (đây là mặc định cho MS SQL Server). URL sẽ trông giống như,

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

Nếu bạn nhấp vào Test Connection, nó sẽ nhắc bạn về thông tin đăng nhập nếu bạn chưa thêm thông tin đó. Và đó là cho DataGrip!

DataGrip cũng có blog sau, có thể hữu ích cho người dùng mới: Kết nối DataGrip với MS SQL Server

Điện tử SQL

Nếu bạn không muốn mua DataGrip, bạn có thể sử dụng SQL Electron. Các bước tương tự. Mở SQL Electron, nhấp vào thêm để thêm máy chủ mới và Server Addressnhập vào <server's address>, Cổng: 1433 và cuối cùng là thông tin đăng nhập của bạn. Và đó là nó!


0

Để kết nối với phiên bản MSSQL đang chạy trên máy chủ từ xa:

Thực hiện theo các bước áp dụng trong bài viết này https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-opes-keywords-and-data-source-names-dsns?view=sql -Server-2017

LƯU Ý: Để hoàn thành các bài kiểm tra, bạn phải thực hiện thêm một số điều: Chỉnh sửa /etc/odbc.ini và thêm vào như sau:

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

Để thực hiện kiểm tra, thực hiện như sau trong thiết bị đầu cuối:

isql -v MSSQL [tên người dùng] [mật khẩu]

Bạn sẽ thấy phản hồi "được kết nối".

Nếu bạn đang vật lộn, hãy kiểm tra xem các cổng trên máy chủ Linux và Windows của bạn đã mở chưa!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.