2012-01-04 289 views
1

我有一台计算机A,它具有一个连接并在计算机B1中操作数据库的PHP程序。为了连接到MS SQL服务器,我使用了以下脚本,该脚本运行良好。这个SQL服务器上只有一个帐户,它是“sa”。用户'sa'登录失败

$server = 'WAREHOUSE1\MYDB';

$connectionInfo = array("UID" => "sa", "PWD" => "something", "Database"=>"MYDB");

$dbcMssql = sqlsrv_connect($server, $connectionInfo);

我们得到了一台新电脑,B2,因为它是又老又慢替换此计算机。我建立了新的数据库,并从B1中恢复它,像在B1中一样设置防火墙设置,选中了“允许远程连接”,并在MS SQL Server Management Studio中选择了“SQL Swrver和Windows身份验证模式”等。我是能够使用MS SQL Server Management Studio连接计算机A的计算机B1和B2上的数据库。我甚至使用相同的用户ID(“sa”)和密码将表格连接到MS Access(OBDC数据库)。

问题是,在新计算机上,B2,我的PHP脚本不再工作,即使我可以使用MS SQL程序连接到它。我不记得除了我在创建B1时已经做过的事情之外的其他事情。错误如下,从sqlsrv_errors()

[SQLSTATE] => 28000

[code] => 18456

[message] => [Microsoft][SQL Server Native Client 10.0][SQL Server]Login failed for user 'sa'.

没有登录由于某种原因,在出于某种原因服务器文件夹中的错误日志文件中的错误,所以我不知道的是什么状态错误是..可能是什么问题?我在整个下午阅读了几篇文章,但我无法完成这项工作!再一次,从A连接到B1很好,这让我相信我没有在B2上设置任何东西。 B1和B2具有相同版本的SQL服务器。

+0

MYDB是实例名称还是数据库名称?另外,你不应该使用'sa'这个;创建一个新帐户。检查以确保数据库服务器接受混合模式身份验证每http://msdn.microsoft.com/en-us/library/ms144284.aspx – 2012-01-04 23:22:57

+0

我打赌$ 100,'sa'的密码是...'sa' ;) – Jakub 2012-01-04 23:37:15

+0

@Jeremy Holovacs:MYBD是实例名称和数据库名称(它们是不是一样的东西?)。我检查了你的链接,但是Win7 Home没有secpol.msc ..但是,在SQL服务器上设置混合身份验证模式是不够的,但是,正如我在OP中描述的那样? – musicliftsme 2012-01-04 23:48:08

回答

1

IRC通过默认安装禁用TCP/IP协议。你需要去SQL Server Config并从那里启用它。

编辑:好的,只需再次阅读,如果你能够通过TCP/IP remotelly连接,那么它应该从你的PHP脚本也是。你确定连接字符串最终指向右边的(B2?)服务器吗?它可以是名称解析问题吗?

+0

是否有另一种检查/设置TCP/IP协议而不是使用SQL Server Config的方法?当我打开配置管理器时,出于某种原因,“MYDB”实例未在计算机B1或B2的安装中列出。它显示计算机上的其他数据库,但不显示MYDB。 – musicliftsme 2012-01-04 23:46:14

+0

打开Sql Server配置管理器。在SQL Server网络配置下,你应该有一个“MYDB协议”。无法想象有另一种方式来打开它。它可能是某种访问权限?只是为了确保SQL Server Conf应该以管理员身份启动 – Radu094 2012-01-05 00:04:14

+0

我也尝试了“以管理员身份运行”,但它仍然不存在于SQL Server配置中。管理器(本地) - > SQL Server 2005网络配置..我只看到“UPSxxx的协议”,这是一个UPS程序的数据库。它可能是某种MYDB实例的版本问题?我有一种感觉,这是某种权限问题..但我作为管理员登录Win7。 – musicliftsme 2012-01-05 00:13:41