来自Ubuntu的MSSQL连接


10

我需要一个简单而完整的教程来从Ubuntu建立MSSQL连接。

我想我已经安装了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 2015年

Answers:


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

将以下条目添加到文件的底部。我们正在设置一个名为“ MSSQL”的数据源名称(DSN)。

[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

然后,最后,在odbc.ini文件中的/usr/local/etc/odbc.ini中的ODBC中设置DSN,方法是将此位添加到文件中:

[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,并使用“ MSSQL”作为DSN从PHP对其进行测试。如果某些方法不起作用,则可以尝试安装以下任何或所有软件包:mdbtools libmdbodbc libmdbtools mdbtools-gmdb


在“ tsql -S 192.168.0.1 -U devuser”之后:连接被外部主机关闭。我该怎么办?
mertyildiran

使用您的本地IP
Trevor Clarke

我实际上使用了“ tsql -S 77.223.141.204 -U培根” MSSQL服务器的IP地址
mertyildiran

那不是本地主机吗?因为您无法连接到自己的外部IP。
Trevor Clarke

是的,无法通过此方法访问外部IP吗?我该怎么办?
mertyildiran 2015年


0

希望您已将链接中的内容复制到文件。您需要在“ /etc/odbc.ini”文件中更新您的SQL Server详细信息。您可以参考链接http://guywyant.info/log/206/connecting-to-ms-sql-server-from-ubuntu/


在“ tsql -S 192.168.0.1 -U devuser”之后:连接被外部主机关闭。我该怎么办?
mertyildiran

是否可以检查MSSQL服务器中端口1433是否打开。您需要确保可以访问MSSQL服务器的端口1433。如果尚未打开,请打开端口,然后检查
vembutech

0

我必须对都是LTS 64位的Ubuntu 14.04和17.04进行此操作。可能适用于更高版本。

安装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

仅此而已。


libtdsodbc.so和libtdsS.so也可以在/ usr / lib / x86_64-linux-gnu / odbc /中找到
Strixy

0

要回答隐含的问题:

我需要一个简单而完整的教程来从Ubuntu建立MSSQL连接

...而忽略所有FreeTDS设置程序。

使用mssql-cliinstall用法)。


0

我在一家大量使用Microsoft产品的公司工作。但是,我更喜欢在Linux机器(Ubuntu)上工作。具体来说,我使用Ubuntu 16.04 LTS

我将JetBrains的DataGripSQL Electron用作SQL GUI。DataGrip将需要用于SQL Server的Microsoft JDBC驱动程序,您在首次打开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>

该服务器的名称和地址将是静态的,因此上述操作仅需要在您尝试访问的每个服务器上运行一次。

数据夹

然后,我跳到Linux机器上并打开DataGrip。对于HostI输入<server's address>,端口:1433(对于MS SQL Server这是默认设置)。该网址应类似于:

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/zh-cn/sql/connect/odbc/linux-mac/connection-string-keywords-and-data-source-names-dsns?view=sql -服务器-2017

注意:要完成测试,您必须做一些其他事情:编辑/etc/odbc.ini并添加以下内容:

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

要执行测试,请在终端中执行以下操作:

isql -v MSSQL [用户名] [密码]

您应该看到“已连接”响应。

如果您在挣扎,请检查Linux和Windows服务器上的端口是否已打开!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.