来自 Ubuntu 的 MSSQL 连接

mer*_*ran 10 connection

我需要一个简单而完整的教程来从 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:~# 
Run Code Online (Sandbox Code Playgroud)

编辑:

在此编辑之前,“/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
Run Code Online (Sandbox Code Playgroud)

我将这些行添加到 /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
Run Code Online (Sandbox Code Playgroud)

从一开始我就没有对“/etc/freetds/freetds.conf”进行任何更改。

尽管如此,一切都没有改变。

Tre*_*rke 11

以下是分步说明(可在此处找到)

首先,安装 unixODBC:

sudo apt-get install unixodbc unixodbc-dev
Run Code Online (Sandbox Code Playgroud)

我还安装了以下(可能是必要的)软件包:

sudo apt-get install tdsodbc php5-odbc
Run Code Online (Sandbox Code Playgroud)

然后下载、解压、编译和安装 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
Run Code Online (Sandbox Code Playgroud)

尝试通过 Telnet 连接到您的 SQL Server 实例:

telnet 192.168.0.1 1433
Run Code Online (Sandbox Code Playgroud)

使用 tsql 工具测试连接:

tsql -S 192.168.0.1 -U devuser
Run Code Online (Sandbox Code Playgroud)

这应该会提示您输入密码,之后您可以希望看到这个美丽的标志:

1>
Run Code Online (Sandbox Code Playgroud)

如果那行得通,我建议举办一个(编码)派对。接下来是一些配置。打开 FreeTDS 配置文件。/usr/local/etc/freetds.conf

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

[MSSQL]
host = 192.168.0.1
port = 1433
tds version = 8.0
Run Code Online (Sandbox Code Playgroud)

现在打开 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
Run Code Online (Sandbox Code Playgroud)

然后,最后,在 /usr/local/etc/odbc.ini 中的 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
Run Code Online (Sandbox Code Playgroud)

使用 isql 工具测试连接:

isql -v MSSQL devuser 'devpass'
Run Code Online (Sandbox Code Playgroud)

如果您看到“已连接!” 你是金色的,恭喜!如果没有,我真的很抱歉;请参阅下文,其中有一些可能会有所帮助的资源。

现在重新启动 Apache 并使用“MSSQL”作为 DSN 从 PHP 测试它。如果某些东西不起作用,您可以尝试安装任何或所有这些软件包:mdbtools libmdbodbc libmdbtools mdbtools-gmdb