PDO和SQL Server使用SQL Server认证而不是Windows认证


PDO and SQL Server using SQL Server Auth instead of Windows Auth

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

我刚刚下载并安装了Microsoft Drivers 3.0 for PHP for SQL Server。
我已将"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");

Thanks in advance

更新:

我找到了一个资源:

http://www.connectionstrings.com/sql -服务器- 2008

构造函数中有第二个和第三个可选参数,它们指定用户名和密码,如下所示:

PDO: __construct

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

语法PDO::__construct($dsn [,$username [,$password .;[,$driver_options]])

参数

$dsn:包含前缀名称(总是sqlsrv),冒号,和Server关键字。例如"sqlsrv:server=(local)"。你可以可选地指定其他连接关键字。参见连接选项获取Server关键字和其他连接的描述关键词。整个$dsn在引号中,因此每个连接关键字不应该单独引用。

$用户名:可选的。包含用户名的字符串。来使用SQL Server身份验证连接,指定登录ID。来使用Windows身份验证连接,指定"。

美元密码:可选的。包含用户密码的字符串。来使用SQL Server身份验证连接,指定密码。来使用Windows身份验证连接,指定"。

[…]

这意味着你可以像这样使用PDO + SQL身份验证连接到SQL Server:

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

连接选项部分还提到,当使用PDO_SQLSRV时,不能在连接字符串中使用UIDPWD参数。