PDO和SQL Server使用SQL Server Auth而不是Windows Auth

问题描述 投票:1回答:1

我的环境: - Windows Server 2008 R2。 - Apache Webserver。 - PHP 5.4.7

我刚刚下载并安装了适用于SQL Server的Microsoft Drivers 3.0 for PHP。 我已将“php_pdo_sqlsrv_54_ts.dll”包含在php中。

Microsoft已经在驱动程序中包含了一个有用的chm文件(SQLSRV_Help.chm)。

在此帮助文件中,有一个使用Windows身份验证的PDO示例:

/* Connect using Windows Authentication. */
try {
  $conn = new PDO("sqlsrv:server=$serverName ; Database=AdventureWorks", "", "");
  $conn->setAttribute( PDO::ATTR ERRMOE, PDO::ERRMODE EXCEPTION );
}

但我必须使用SQL Server身份验证连接到我们的MS SQL Server 2008 R2!

连接到SQL Server之间有什么区别

  1. 使用PDO和Windows身份验证
  2. 使用PDO和SQL Server身份验证

它只是连接字符串吗?我必须写:

$conn = new PDO("sqlsrv:server=$serverName; Database=AdventureWorks; UID=sa; PWD=abc");

或者我必须写:

$conn = new PDO("sqlsrv:server=$serverName; Database=AdventureWorks; User Id=sa; password=abc");

提前致谢

更新:

我找到了一个资源:

http://www.connectionstrings.com/sql-server-2008

php sql-server sql-server-2008 authentication pdo
1个回答
3
投票

构造函数中有可选的第二个和第三个参数,用于指定用户名和密码as described here

PDO :: __结构

创建与SQL Server数据库的连接。

语法PDO :: __ construct($ dsn [,$ username [,$ password [,$ driver_options]]])

参数

$ dsn:包含前缀名称(始终为sqlsrv),冒号和Server关键字的字符串。例如“sqlsrv:server =(local)”。您可以选择指定其他连接关键字。有关Server关键字和其他连接关键字的说明,请参阅连接选项。整个$ dsn都是引号,因此不应单独引用每个连接关键字。

$ username:可选。包含用户名称的字符串。要使用SQL Server身份验证进行连接,请指定登录ID。要使用Windows身份验证进行连接,请指定“”。

$ password:可选。包含用户密码的字符串。要使用SQL Server身份验证进行连接,请指定密码。要使用Windows身份验证进行连接,请指定“”。

[...]

这意味着您可以使用PDO + SQL身份验证连接到SQL Server,如下所示:

$conn = new PDO(
    "sqlsrv:server=$serverName ; Database=AdventureWorks",
    "sa",
    "strong password"
);

connection options section还提到在使用PDO_SQLSRV时不能在连接字符串中使用UIDPWD参数。

© www.soinside.com 2019 - 2024. All rights reserved.