无法让 mssql 与 sql server 2005 一起工作

无法让 mssql 与 sql server 2005 一起工作

我是一名 MySQL/Apache 用户,正在尝试使用 IIS 和 SQL 服务器,所以如果这是一个愚蠢的问题,请耐心等待。

我使用的是 IIS 版本 7.5。PHP 版本 5.3.13 和 SQL Server 2005 IIS 在端口 90 上运行,不确定这是否会造成影响。我知道我的 SQL Server 正在运行,因为我可以在服务器管理工​​作室中浏览/连接到它。

我知道 php 配置正确,因为 //localhost:90/phpinfo.php 运行正常。

我将 phpinfo 中的 php_msql.dll 扩展更新为:extension=ext/php_msql.dll

编辑-但是,当我在“配置命令”行下运行 phpinfo() 时,出现了以下内容:--without-mssql

我找到/下载了 ntwdblib.dll 并将其放在 sys32 和 php 根目录中。

所有这些措施都应该能解决问题,但事实并非如此。

这是我正在使用的代码,直接来自 php.net:

<?php
// Server in the this format: <computer>\<instance name> or 
// <server>,<port> when using a non default port number
$server = 'localhost';

// Connect to MSSQL
$link = mssql_connect($server, 'uname', 'pwd');

if (!$link) {
  die('Something went wrong while connecting to MSSQL');
}
?>

显然,我使用的是真实的用户名和密码,但是当我在浏览器中加载文件时,我收到 500 错误。检查日志后,显示的内容如下:

2012-06-25 12:41:29 ::1 获取 /test.php - 90 - ::1 Mozilla/5.0+(Windows+NT+6.1;+WOW64)+AppleWebKit/536.5+(KHTML,+like+Gecko)+Chrome/19.0.1084.56+Safari/536.5 500 0 0 5

对我来说,这没什么帮助。我做错了什么?

谢谢

答案1

尝试将实例名称附加到服务器名称。下面摘自http://php.net/manual/en/function.mssql-connect.php

<?php
// Server in the this format: <computer>\<instance name> or 
// <server>,<port> when using a non default port number
$server = 'KALLESPC\SQLEXPRESS';

// Connect to MSSQL
$link = mssql_connect($server, 'sa', 'phpfi');

if (!$link) {
    die('Something went wrong while connecting to MSSQL');
}
?>

编辑

另外,请验证以下内容:

  • 确保已设置具有“SQL SERVER 身份验证”且有权连接的用户
  • 另外,请确保安装后仍遇到问题,运行 PHPinfo 并检查是否找到以下内容:

    • PHPINFO: mssql
    • 已启用 MSSQL 支持
  • 使用下列方法之一指定服务器。

    • hostname:port(Linux)或hostname,port(Windows)
    • .\MSSQLINSTANCENAME
    • COMPUTER\MSSQLINSTANCENAME
    • 用 IP 地址替换主机名以排除解析问题
  • 使用 ODBC 连接器

    1. 管理工具 -> 数据源 (ODBC)
    2. 系统 DNS
    3. 添加...“SQL Server”

      • 然后只需使用 odbc_connect("sql_test", "user", "pass") 即可。

答案2

好吧,经过 2/3 天的时间,我找到了答案。显然,从 php 5.3 开始,php 在 IIS 上运行时不再使用 msql.dll 扩展。现在,它使用名为 sqlsrv.dll 的东西来代替它。此外,有了这个新扩展,就需要使用 php 中提供的 sqlsvr api 了。所以从本质上讲,我使用的是 mssql_connect,而我本应该使用 sqlsrv_connect。

这仍然不能解决我的错误日志问题,而且我仍然无法连接到服务器,但这是由于用户名/密码组合错误造成的。

所以感谢大家的帮助,希望有人能发现这很有用。

相关内容