Ubuntu'dan MSSQL bağlantısı


10

Ubuntu'dan MSSQL bağlantısı kurmak için kolay ve eksiksiz bir eğiticiye ihtiyacım var.

Sanırım FreeTDS ve UnixODBC'yi kurdum ama konfigürasyonlar çok karmaşık, sorunu anlamadım.

Bu öğreticiyi izledim: https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/Platform-Installation---Ubuntu

Ama başaramadım.

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

Düzenle:

Bu düzenlemeden önce "/etc/odbcinst.ini" ve "/etc/odbc.ini" boştu.

Bu satırları /etc/odbcinst.ini dosyasına ekledim:

[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

Bu satırları /etc/odbc.ini dosyasına ekledim:

[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

En başından beri "/etc/freetds/freetds.conf" üzerinde herhangi bir değişiklik yapmadım.

Yine de hiçbir şey değişmedi.


dosyasında (/etc/odbc.ini) giriş oluşturdunuz mu? ve ayrıca "/etc/odbcinst.ini" dosyasındaki sürücüleri kontrol edin
vembutech

Bu dosyaların ikisi de boş Tam olarak ne yapmalıyım? Bir bağlantıyı veya bazı ayrıntıları paylaşabilir misiniz?
mertyildiran

İzlediğiniz bağlantıda bulunan "UnixODBC'yi Yapılandır" adımını kaçırdığınıza inanıyorum. Lütfen URL'deki gibi bu iki dosyayı güncelleyin: github.com/rails-sqlserver/activerecord-sqlserver-adapter/wiki/… ve sorunun çözülüp çözülmediğini kontrol edin.
vembutech

Hiçbir şey değişmedi Yukarıda görebileceğiniz soruyu düzenledim
mertyildiran

Yanıtlar:


11

İşte adım adım talimatlar (burada bulunur) :

İlk olarak, unixODBC'yi yükleyin:

sudo apt-get install unixodbc unixodbc-dev

Ayrıca aşağıdaki (belki de gerekli) paketleri yükledim:

sudo apt-get install tdsodbc php5-odbc

Ardından FreeTDS'yi indirin, untar, derleyin ve yükleyin (uyarı, URL değişebilir):

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

SQL Server örneğinize Telnet üzerinden bağlantı girişiminde bulunun:

telnet 192.168.0.1 1433

Bağlantıyı test etmek için tsql aracını kullanın:

tsql -S 192.168.0.1 -U devuser

Bu sizi şifre isteyecektir, bundan sonra bu güzel işareti görmeyi ümit etmeyi umabilirsiniz:

1>

Bu işe yaradıysa, (kodlama) partisi atmanızı öneririm. Sıradaki bazı yapılandırma. FreeTDS yapılandırma dosyasını açın. /usr/local/etc/freetds.conf

Aşağıdaki girdiyi dosyanın altına ekleyin. 'MSSQL' adlı bir veri kaynağı adı (DSN) oluşturuyoruz.

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

Şimdi ODBC yapılandırma dosyasını açın: /usr/local/etc/odbcinst.ini

Ve sonuna aşağıdaki MSSQL sürücü girişini (FreeTDS) ekleyin:

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

Son olarak, odbc.ini dosyasında /usr/local/etc/odbc.ini ODBC içindeki DSN'yi bu biti dosyaya ekleyerek kurun:

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

İsql aracını kullanarak bağlantıyı test edin:

isql -v MSSQL devuser 'devpass'

“Bağlı!” sen altınsın, tebrikler! Değilse, gerçekten üzgünüm; yardımcı olabilecek bazı kaynakların bulunduğu yere bakın.

Şimdi Apache'yi yeniden başlatın ve DSN olarak 'MSSQL' kullanarak PHP'den test edin. Bir şey işe yaramazsa, bu paketlerin herhangi birini veya tümünü yüklemeyi deneyebilirsiniz: mdbtools libmdbodbc libmdbtools mdbtools-gmdb


"tsql -S 192.168.0.1 -U devuser" dan sonra: Bağlantı yabancı sunucu tarafından kapatıldı. Ne yapmalıyım?
mertyildiran

yerel ip kullanın
Trevor Clarke

Aslında "tsql -S 77.223.141.204 -U pastırma" MSSQL sunucusunun IP adresini kullandım
mertyildiran

o zaman localhost olmaz mıydı? çünkü kendi harici ip'inize bağlanamazsınız.
Trevor Clarke

Evet, harici bir IP bu yöntemle erişmek mümkün değil mi? Ne yapmalıyım?
mertyildiran


0

Umarım içeriği dosyaya kopyalamışsınızdır. SQL sunucu ayrıntılarınızı "/etc/odbc.ini" dosyasında güncellemeniz gerekir. Http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/ bağlantısına başvurabilirsiniz.


"tsql -S 192.168.0.1 -U devuser" dan sonra: Bağlantı yabancı sunucu tarafından kapatıldı. Ne yapmalıyım?
mertyildiran

MSSQL sunucusunda 1433 numaralı bağlantı noktasının açık olup olmadığını kontrol edebilir misiniz? MSSQL sunucunuzun 1433 numaralı bağlantı noktasına erişebildiğinizden emin olmanız gerekir. Açık değilse lütfen limanı açın ve kontrol edin
vembutech

0

Bunu her ikisi de LTS 64-bit olan Ubuntu 14.04 ve 17.04 için yapmak zorunda kaldım. Muhtemelen sonraki sürümlerde çalışır.

Unixodbc (ODBC bağlantıları), freetds (SQL Server bağlantıları) ve tdsodbc (önceki ikisi arasında köprü) yükleme

sudo apt install unixodbc freetds-bin tdsodbc

ODBC sürücülerinizi /etc/odbcinst.ini dosyasına ekleyin (boş olmalıdır)

[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'lerinizi /etc/odbc.ini dosyasına ekleyin (ayrıca boş olmalıdır)

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

Ve hepsi buydu.


libtdsodbc.so ve libtdsS.so, / usr / lib / x86_64-linux-gnu / odbc /
adresinde de bulunabilir

0

Tarafından ima edilen soruyu cevaplamak için:

Ubuntu'dan MSSQL bağlantısı kurmak için kolay ve eksiksiz bir eğiticiye ihtiyacım var

... ve tüm FreeTDS kurulum öğelerini yok sayarak.

Mssql-cli kullanın ( kurulum , kullanım ).


0

Microsoft ürünlerini yoğun kullanan bir şirkette çalışıyorum. Ancak, bir Linux makinesinde (Ubuntu) çalışmayı tercih ederim. Özellikle, Ubuntu 16.04 LTS kullanıyorum .

JetBrains'in DataGrip veya SQL Electron'u SQL GUI'leri olarak kullanıyorum. DataGrip, DataGrip'i ilk kez açtığınızda manuel olarak işaret etmeniz gereken SQL Server için Microsoft JDBC Sürücüsü gerektirir . Bunu koydum /usr/share/java/, ama her yerde çalışacak.

Windows 10 dizüstü bilgisayarımda bağlantı basit. SQL Server Management Studio'yu açıyorum ve oturum açmak için kimlik bilgilerimi kullanıyorum (kullanıcı adı + şifre); Windows Kimlik Doğrulaması kullanmıyorum.

Ön şartlar

Ubuntu'dan bağlanmak için biraz ( sadece biraz ) fazladan bir çalışma. İlk olarak, Windows 10 makinemde bir Powershell terminali açıyorum ve aşağıdakileri yazıyorum

nslookup <server name here>

ve bunun gibi bir şey döndürür

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

Sunucunun adı ve adresi statik olacaktır, bu nedenle yukarıdakilere erişmeye çalıştığınız sunucu başına yalnızca bir kez çalışması gerekir.

DataGrip

Sonra Linux makineme atladım ve DataGrip'i açtım. For HostI tipi <server's address>1433 (bu MS SQL Server için varsayılan): Liman,. URL,

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

Üzerine tıklarsanız, Test Connectionhenüz eklemediyseniz giriş bilgilerini girmeniz istenir. DataGrip için hepsi bu kadar!

DataGrip ayrıca yeni kullanıcılar için yardımcı olabilecek şu blog'a sahiptir: DataGrip'in MS SQL Server'a bağlanması

SQL Elektron

DataGrip'i satın almak istemiyorsanız SQL Electron'u kullanabilirsiniz. Adımlar benzer. SQL Electron aç Yeni bir sunucu eklemek için eklentiyi tıklatın ve için Server Addressde tip <server's address>nihayet giriş bilgilerinizi 1433 ve: Liman,. Ve bu kadar!


0

Uzak sunucuda çalışan MSSQL örneğine bağlanmak için:

Bu makaledeki ilgili adımları izleyin https://docs.microsoft.com/en-us/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -sunucu-2017

NOT: Testleri tamamlamak için birkaç şey daha yapmanız gerekir: /etc/odbc.ini dosyasını düzenleyin ve aşağıdakileri ekleyin:

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

Testi gerçekleştirmek için terminalde aşağıdakileri yapın:

isql -v MSSQL [kullanıcı adı] [şifre]

"Bağlı" bir yanıt görmelisiniz.

Zorlanıyorsanız, Linux ve Windows sunucunuzdaki bağlantı noktalarının açık olduğunu kontrol edin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.