使用Zend Framework 2和ODBC驱动程序在Linux上连接到MS SQL Server

我需要将Windows服务器设置迁移到Linux(Red Hat 7.2)服务器。 以前我们在Windows机器上使用了pdo_sqlsrv驱动程序。 在Linux上,我们安装了pdo_odbc驱动程序。 但是因为Zend Framework 2并不支持这个开箱即用的function,所以我使用现在可用的ZF2 API文档自己找出了一个数据库configuration。 这是configuration:

'db' => array( 'driver' => 'pdo', 'username' => 'ourDbUsername', 'password' => 'ourDbPassword', 'dsn' => 'odbc:DRIVER={SQL Server Native Client 11.0};UID=ourDbUsername;PWD=ourDbPassword;DATABASE=ourDbName;SERVER=ourServerIP', 'charset' => 'UTF-8' ), 

到现在为止还挺好。 如果我们运行我们的应用程序,一切都按预期进行,直到一个简单的GET请求每次都失败,以获取对象的细节。 即使我删除了之前执行的其他请求,我也无法使请求正常工作。 即使以另一种方式链接请求也无济于事。 这是错误的:

 Statement could not be executed (HY000 - 0 - [Microsoft][SQL Server Native Client 11.0] Connection is busy with results for another command (SQLExecute[0] at /builddir/build/BUILD/php-5.4.16/ext/pdo_odbc/odbc_stmt.c:254) - HY000) 

我们试图设置MARS_Connection(在这里描述如何解决本地客户端错误“连接正忙于另一个命令的结果?”在smozgur的答案? )。 但是我们没有这样一个/etc/odbc.ini文件,只有一个/etc/odbcinst.ini文件。 所以我们的/etc/odbcinst.ini文件现在看起来像这样:

 [ODBC Driver 11 for SQL Server] Description=Microsoft ODBC Driver 11 for SQL Server Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2270.0 Threading=1 UsageCount=1 MARS_Connection=yes 

我是否错过了我的设置中的一些东西来实现这个function?

我玩我的数据库连接,结果添加“MARS_Connection =是;” 给我的dsn做这个工作。

 'db' => array( 'driver' => 'pdo', 'username' => 'ourDbUsername', 'password' => 'ourDbPassword', 'dsn' => 'odbc:DRIVER={SQL server Native Client 11.0};UID=ourDbUsername;PWD=ourDbPassword;DATABASE=ourDbName;SERVER=ourserverIP;MARS_Connection=yes;', 'charset' => 'UTF-8' ), 

希望这可以帮助下一个搜索者!