这个问题可能更适合Serverfault,但我不确定实际问题在哪里,所以我将从这里开始问。
我刚刚安装了Windows Server 2012和SQL Server 2008 R2 SP1。我们通常监控我们的SQL服务器从php脚本测试连接等,但我不能连接到这个特定的服务器。错误日志显示"原因:无法找到与提供的名称匹配的登录",但是当将完全相同的用户名/密码复制/粘贴到本地服务器或远程服务器上的Management Studio时,一切都有效。我认为这是因为2012年的操作系统,但不完全确定,希望有人能给我一些指点。
运行SQL的服务器和执行监视的服务器之间没有防火墙,并且允许远程连接。测试的用户都具有连接数据库引擎的权限,启用了登录,禁用了任何密码策略。
PHP版本是5.3.3,我使用的是freeTDS和协议版本8.0。最后是php.ini
中与mssql相关的所有配置选项mssql mssql.allow_persistent => On
mssql.batchsize => 0
mssql.charset => no value
mssql.compatability_mode => Off
mssql.connect_timeout => 5
mssql.datetimeconvert => On
mssql.max_links => Unlimited
mssql.max_persistent => Unlimited
mssql.max_procs => Unlimited
mssql.min_error_severity => 10
mssql.min_message_severity
mssql.secure_connection => Off
mssql.textlimit => Server default
mssql.textsize => Server default
mssql.timeout => 60
似乎我是错误的TCP连接的权利,这不是一个编程/php特定的错误。下面的博文描述了如果将来有人在这个问题上遇到同样的错误。
http://dbccpage.wordpress.com/2011/11/19/how -解决严重错误- 18456 - 14 -国家- 12 -登录-基础-服务器访问-验证-失败- - -基础架构错误-检查- - - -前- errors/
我不知道为什么这个问题只出现在我们的Windows Server 2012机器上,但这似乎是我们的情况