我需要通过PHP(WAMP,最新版本)连接到SQL Server 2008。我安装并设置了sqlsrv驱动程序,它们确实显示在phpinfo()
。
我正在使用以下行连接到我的数据库,使用Windows身份验证:
$serverName = "(local)";
$connectionOptions = array("Database"=>"MyTestDatabase");
$conn = sqlsrv_connect( $serverName, $connectionOptions) or die("Error!");
我收到以下错误:
Array
(
[0] => Array
(
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -49
[code] => -49
[2] => This extension requires the Microsoft SQL Server 2011 Native Client. Access the following URL to download the Microsoft SQL Server 2011 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712
[message] => This extension requires the Microsoft SQL Server 2011 Native Client. Access the following URL to download the Microsoft SQL Server 2011 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712
)
[1] => Array
(
[0] => IM002
[SQLSTATE] => IM002
[1] => 0
[code] => 0
[2] => [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
[message] => [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified
)
)
任何帮助都会很棒,但请具体说明,因为除了一些基础知识之外,我真的不知道我的方式。
答案 0 :(得分:3)
该错误是由注册表中的权限问题引起的。存在一个密钥,其中存储了本机客户端的路径,并且您在应用程序池中使用的标识被拒绝访问。
查找拒绝访问进程w3wp.exe
的注册表项。在IIS的情况下,不确定WAMP中进程的名称是什么,但程序是相同的。
就我而言:
HKLM\Software\ODBC\ODBCINST.INI\SQL Native Client 10.0
答案 1 :(得分:2)
尝试这种方法来查看错误实际是什么:
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn ) {
echo "Connection established.<br />";
} else {
echo "Connection could not be established.<br />";
die( print_r( sqlsrv_errors(), true));
}
答案 2 :(得分:2)
根据您的设置,您可能需要恢复为mssql_connect
及相应的功能。这适用于mssql 2008,你通常不会失去有意义的功能。
以下是设置与数据库的连接的示例。根据您的配置,您可能需要添加端口信息等。
$hostname = "server.domain.com";
$database = "DatabaseName";
$username = "LocalSQLUserName";
$password = "P@ssw0rd";
$Connection = mssql_connect($hostname, $username, $password);
如果您在XAMP环境中运行,那么您可以在本地运行所有内容。如果是这种情况,您的服务器将是localhost
或127.0.0.1
,您可以在SQL中定义自己的帐户。正如我所说,我自己不使用Windows帐户,但您可以将NT帐户添加到“服务器”,然后在SQL Server管理工具中设置该用户可以访问您正在使用的数据库。然后,您已设置帐户和密码,并知道它们是什么。如果您在使用该帐户时遇到问题,可以尝试computerName\userName
。
如果您不是管理员,则需要从他们那里获取相关信息。