当我尝试从名为的服务器连接时出现此错误:应用服务器1到同一域中的另一台服务器科布尔,称为数据库服务器1
SQLSTATE[28000]: [Microsoft][SQL Server Native Client 11.0][SQL Server]Login failed for user 'KOBL\kobladmin'.
第一个奇怪的事情是 DatabaseServer1 中有 Sql Server 2008 R2 和 Sql Native Client 10.0,我不知道为什么当我尝试在浏览器中连接到 DatabaseServer 时上面的行中会出现 11.0 版本。
我在 AplicationServer1 上使用:
- PHP 5.4
- IIS 7
数据库服务器1:
- SQL 服务器 2008 R2
我使用该代码来建立连接:
配置.php
<?php
define ("DB_USER","KOBL\kobladmin");
define ("DB_PASS","AdminKobl");
define ("DSN","sqlsrv:server=databasebserver1.kobl.com;database=kobl_system");
?>
连接.php
<?php
require 'config.php';
class DB_Connect {
private static $_instance;
//Connecting to database
public function &pdo_connect() {
if(!self::$_instance) {
try{
self::$_instance = new PDO(DSN,DB_USER, DB_PASS);
self::$_instance->setAttribute(PDO::ATTR_PERSISTENT, true);
self::$_instance->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $ex) {
die("PDO Connection error: ".$ex->getMessage()."<br/>");
}
}
return self::$_instance;
}
private function __construct() {
}
private function __clone() {
}
}
?>
连接 Sql Server 的凭据与 Windows 身份验证相同。
笔记:域名、用户名和密码都是假的(我之所以这么说是因为有时会有人对我说“你不能放置数据库连接的真实数据”。
答案1
错误中出现 SQL Native Client 11,因为这是 ApplicationServer1 用于连接 DatabaseServer1 的客户端版本。应用服务器上必须安装 SQL 2012 客户端工具。
身份验证问题似乎是它KOBL\kobladmin
没有访问您数据库的权限。请确保您 1) 在 SQL Server 中为该帐户创建了 Windows 登录名,然后 2) 在 kobl_system 数据库中授予该登录名适当的权限。