【问题标题】:PDO and SQL Server using SQL Server Auth instead of Windows AuthPDO 和 SQL Server 使用 SQL Server Auth 而不是 Windows Auth
【发布时间】:2013-01-17 20:58:55
【问题描述】:

我的环境:
- Windows Server 2008 R2。
- Apache 网络服务器。
- 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");

提前致谢

更新:

我找到了一个资源:

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

【问题讨论】:

    标签: php sql-server sql-server-2008 authentication pdo


    【解决方案1】:

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

    PDO::__构造

    创建到 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"
    );
    

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

    【讨论】:

    • 谢谢 Salman A。第一部分有一个示例(sqlsrv:server=(local),但没有示例如何编写可选部分。我写“UID=sa ; PWD=a" 或 "User Id=sa; password=a"?
    猜你喜欢
    • 1970-01-01
    • 2018-02-06
    • 1970-01-01
    • 2020-04-28
    • 2020-01-08
    • 1970-01-01
    • 2014-02-12
    • 2012-09-26
    相关资源
    最近更新 更多