Linux 上的 SQL Server 2005 扩展

Posted

技术标签:

【中文标题】Linux 上的 SQL Server 2005 扩展【英文标题】:SQL Server 2005 extension on Linux 【发布时间】:2012-08-29 04:23:55 【问题描述】:

有人知道如何在 Linux 网络服务器上安装 Ms SQL 扩展 2005 吗? 网络服务器目前有 FreeTDS 库版本,我不知道这意味着什么。但是当我尝试连接时,它并没有说“mssql_connect() 不存在”,而是说“无法连接到服务器:xx.xx.xx.xx”

我想这是因为扩展的版本,因为我在带有 ntwdblib.dll 的 Windows 上发生了这个问题。但我不知道如何在 Linux 上解决这个问题。

我只需要使用函数。数据库在 Windows 服务器上,所以我想使用 mssql_connect() 连接到它。

【问题讨论】:

这无助于回答您的问题,但为什么不在 Windows 机器上开发呢?您的开发环境越接近您的生产环境,您的烦恼就越少。 你是否在 php 中编译了 MS SQL 支持? @Matt 也许他们的生产环境设置如下:Web 服务器:Linux,数据库服务器:SQL Server。所以在那里,他的开发环境类似于生产环境;-) @MichaelBuen 好点! 好吧,Linux 服务器是一家虚拟主机公司。但我碰巧认识他们,他们正试图让 mssql 扩展版本 2005 为我工作,但是他们没有 mssql 经验,我从来没有使用过 linux,所以是的。我检查了 phpinfo,mssql 就在它上面不是我认为正确的版本。我们不知道要为此改变什么。就像我在 Windows 上说的那样,它只是 ntwbdlib.dll 【参考方案1】:

可以使用 FreeTDS 库在 Linux 上使用 mssql_* 函数,但需要将支持编译成 PHP 二进制文件 (--with-mssql)

【讨论】:

【参考方案2】:

您是否安装了 unixODBC 模块? sudo apt-get install unixodbc

您是否为 PHP 安装了 ODBC 支持? sudo apt-get install php5-odbc

您是否在 odbc.ini 和 odbcinst.ini 文件中定义了与 Microsoft Sequel Server 的连接?

odbc.ini

# Define a connection to the MSSQL server.
# The Description can be whatever we want it to be.
# The Driver value must match what we have defined in /etc/odbcinst.ini
# The Database name must be the name of the database this connection will connect to.
# The ServerName is the name we defined in /etc/freetds/freetds.conf
# The TDS_Version should match what we defined in /etc/freetds/freetds.conf
[msft_sql_server]
Description             = The Microsoft Sequel Server
Driver                  = freetds
Database                = XXXXXXXXXX
ServerName              = msft_sql_server
TDS_Version             = 8.0

odbcinst.ini

# Define where to find the driver for the Free TDS connections.
[freetds]
Description     = MS SQL database access with Free TDS
Driver          = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so
Setup           = /usr/lib/i386-linux-gnu/odbc/libtdsS.so
UsageCount      = 1

然后您的 PHP 连接将如下所示:

$db_connection = new PDO("dblib:dbname=$database_server;host=$database_server", $db_username, $db_password);

您可以使用 iSQL 程序测试上述设置,以确保您可以建立连接。

如果您在从 Linux 服务器连接到 MSFT 服务器时仍然遇到问题 - 是否存在防火墙?您确定您拥有有效的用户凭据吗? MSFT 服务器会接受来自远程客户端的连接吗?

【讨论】:

以上是关于Linux 上的 SQL Server 2005 扩展的主要内容,如果未能解决你的问题,请参考以下文章

如果存储过程在 SQL Server 2005 上的选择之前进行更新,则没有结果集

SQL Server 2005 上的“警告:没有看到 LOP_CKPT_END”消息是啥意思?

在 SQL Server 2005 中将列标识上的标识设置为另一个表的列

使用 SQL Server 2008 和 SQL Server 2005 和日期时间

在 SQL Server 2005 中恢复 SQL Server 2014 数据库

如何启动sql server 2005