无法使用 PHP 和 Codeigniter 从 PHP Azure 连接到 SQL Server Azure

Posted

技术标签:

【中文标题】无法使用 PHP 和 Codeigniter 从 PHP Azure 连接到 SQL Server Azure【英文标题】:Unable to connect from PHP Azure to SQL Server Azure using PHP with Codeigniter 【发布时间】:2015-08-04 01:13:14 【问题描述】:

我正在尝试从 php 应用程序(使用 codeigniter 3)连接到 MSSQL 数据库。

由于 Azure PHP 安装不支持 MSSQL,只有 ODBC 连接(我想知道为什么)我的连接参数如下所示:(此示例中的主机名、用户名、数据库和密码被 xxxxx、ddddd、uuuuu、ppppp 覆盖)

$db['default'] = array(
    'dsn'   => @$_SERVER['SQLAZURECONNSTR_ddddd'],
    'hostname' => 'Driver=SQL Server;tcp:xxxxx.database.windows.net,1433;Database=ddddd',
    'username' => 'uuuuuu',
    'password' => 'pppppp',
    'database' => 'ddddd',
    'dbdriver' => 'odbc',
    'dbprefix' => '',
    'pconnect' => FALSE,
    'db_debug' => TRUE,
    'cache_on' => FALSE,
    'cachedir' => '',
    'char_set' => 'utf8',
    'dbcollat' => 'utf8_general_ci',
    'swap_pre' => '',
    'autoinit' => TRUE,
    'stricton' => FALSE,
    'failover' => array(),
    'save_queries' => TRUE
);

但我收到以下错误:

消息:odbc_connect():SQL 错误:[Microsoft][ODBC 驱动程序管理器] 数据 > 未找到源名称且未指定默认驱动程序,> SQLConnect 中的 SQL 状态 IM002

文件名:odbc/odbc_driver.php

我会假设 azure php odbc 驱动程序已正确配置为连接到其链接的 mssql 数据库。 - 但我显然遗漏了一些东西。

【问题讨论】:

【参考方案1】:

Azure环境默认不安装php_mssql.dll扩展,而是安装php_sqlsrv.dll

所以要连接到 SQL Server,我们可以将 'dbdriver' 设置为 'sqlsrv'

application\config\database.php 中的设置应该是这样的:

'hostname' => '<server_name>.database.windows.net,1433',
'username' => '<username>',
'password' => '<password>',
'database' => '<database>',
'dbdriver' => 'sqlsrv',
'pconnect' => FALSE,

要使用odbc驱动连接SQL Server,我们只需要将'hostname'设置为正确的odbc连接字符串即可。我们可以在 Azure 门户中找到连接字符串。

我试图重现您的问题, 看来您在'dsn' 中设置了不正确的值。在我的测试中,我将它设置为一个空字符串,它对我有用。

【讨论】:

您还有什么需要做的吗,例如为 SQL Server 配置防火墙设置?我正在尝试从 Azure Web 应用程序连接到 Azure SQL Server,只是不断收到“无法使用提供的设置连接到您的数据库服务器”。使用 CodeIgniter,我检查了主机名/用户名/密码等三倍。还有什么可能? 忽略我,为了安全起见,我更改了密码,现在它似乎可以工作了 - 不需要在防火墙设置中设置任何 IP 地址。 @xceed,恭喜。顺便说一句,如果你在本地测试,则需要操作。

以上是关于无法使用 PHP 和 Codeigniter 从 PHP Azure 连接到 SQL Server Azure的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 sqlsrv 从 CodeIgniter 连接 SQL 数据库

从 URL 中删除 index.php - Codeigniter 2

无法从 CodeIgniter URL 中删除 index.php

Tomcat删除index.php Codeigniter

无法在数据库 PHP、Codeigniter 中搜索现有值

无法从 codeigniter 2.1.4 连接到 SQL Server 2012