【问题标题】:Using PDO's odbc to connect to a MSSQL server instance with Windows Authentication使用 PDO 的 odbc 连接到具有 Windows 身份验证的 MSSQL 服务器实例
【发布时间】:2015-06-18 20:35:46
【问题描述】:

我正在尝试使用带有 odbc 的 PDO 连接到 MSSQL 数据库。我知道有一个包 SqlSrv(但由于某种原因,包 (.dll) 无法正确加载)。所以我发现一些文档认为 PDO 也可以。在我的PHP.ini 中,我启用了扩展程序php_pdo_odbc.dll,它可以正常加载。

我的连接字符串如下所示:

$conn = new PDO(
    'odbc:
        Driver=SQL Server;
        Server=MyServer\MyInstance;
        Database=MyDatabaseName;
        Trusted Connection=Yes;',
    'MyWindowsUserName',
    'MyWindowsPassword'
);

我尝试了各种属性(例如,通过将域添加到用户名,使用身份验证选项用户 ID、UID、密码、PWD 和受信任的连接进行切换)但我不断收到消息

SQLSTATE[28000] SQLDriverConnect: 18456 [Microsoft][ODBC SQL Server 驱动程序][SQL Server]用户“MyWindowsUserName”登录失败。

关于如何使用我的 Windows 帐户连接到数据库有什么建议吗? (这是我连接数据库的唯一方法)

【问题讨论】:

  • 我想弄清楚为什么 SqlSrv 不起作用。这是“官方”方式,因此更容易长期管理。

标签: php sql-server pdo windows-authentication dsn


【解决方案1】:

尝试删除用户名和密码

$conn = new PDO(
    'odbc:
        Driver=SQL Server;
        Server=MyServer\MyInstance;
        Database=MyDatabaseName;
        Trusted Connection=Yes;'
);

【讨论】:

  • 不幸的是,这不起作用(我已经尝试过了)。当我不提供任何凭据时,它会尝试以服务器的名称进行连接。
【解决方案2】:

我已通过 Windows 使用以下 PHP 语句进行身份验证: 这是我的代码:

$ Conn = new PDO ("odbc: Driver = {SQL Server}; Server=JAMILI-PC\SQLEXPRESS; null; null");
  • 我使用的是 Windows 2008。
  • 希望它能解决您的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多