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 和日期时间