我正在使用
PHP编写的Web应用程序并使用SQL Server 2008.为了连接到数据库,我使用了Microsoft的SQLSRV driever.在本应用程序的一部分中,我必须使用SQL Transactions.正如微软建议的那样,我完全基于这篇文章做到了.我的代码中的主要流程遵循以下步骤:
1-启动sql事务
2-通过jQuery将信息发送到PHP文件并检查JSON发送的结果
3如果结果为false则回滚,如果为真,则转到下一个查询.
如果没有发生错误且所有结果都正常,则提交4次事务.
// This is my pseudo code
if (sqlsrv_begin_transaction( $sqlsrv->sqlsrvLink ) === true) {
$firstQuery = sqlsrv_query($stmt1);
if (!$firstQuery) {
sqlsrv_rollback();
} else {
$nextQuery = sqlsrv_query($stmt2);
if (!$nextQuery) {
sqlsrv_rollback();
} else {
sqlsrv_commit();
}
}
} else {
print_r(sqlsrv_errors()); // Here is where I get the error below.
}
我遇到的问题是这个错误:
[Microsoft][SQL Server Native Client 10.0][SQL Server] New transaction is not allowed because there are other threads running in the session
我正在使用SQLSRV驱动程序ver.2.
这个错误是什么?我该如何解决?
我将自己的sqlsrv类包含在index.php的第一部分中,其中包含以下方法:
function __construct($dbServerName,$dbUsername,$dbPassword,$dbName)
{
$connectionInfo = array("Database"=> $dbName, "CharacterSet" => "UTF-8");
$this->sqlsrvLink = sqlsrv_connect($dbServerName, $connectionInfo);
if ($this->sqlsrvLink === false) {
$this->sqlsrvError = sqlsrv_errors();
}
}
function __destruct()
{
sqlsrv_close($this->sqlsrvLink);
}