无法使用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
);

但是我得到以下错误:

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

文件名:odbc/odbc_driver.php

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

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

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

应用程序'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'中设置了不正确的值。在我的测试中,我把它设置为一个空字符串,它为我工作。