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

Unable to connect from PHP Azure to SQL Server Azure using PHP with Codeigniter

我正在尝试从 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
);

但我收到以下错误:

Message: odbc_connect(): SQL error: [Microsoft][ODBC Driver Manager] Data > source name not found and no default driver specified, SQL state IM002 in > SQLConnect

Filename: odbc/odbc_driver.php

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

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

所以要连接到SQL服务器,我们可以将'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服务器,我们只需要将'hostname'设置为正确的odbc连接字符串即可。我们可以在 Azure 门户中找到连接字符串。

我试图重现你的问题, 您似乎在 'dsn' 中设置了错误的值。在我的测试中,我将它设置为一个空字符串,它对我有用。