“交易中止”例外

时间:2014-09-28 18:48:26

标签: c# sql-server exception transactionscope sqlfilestream

我有这段代码将图像写入SqlFileStream

string strFileId;
using (var oTransaction = new TransactionScope()) {    
    var oSqlParameter = new SqlParameter[5];
    oSqlParameter[0] = new SqlParameter("@FileName", imageName);
    oSqlParameter[1] = new SqlParameter("@Description", "Description");
    oSqlParameter[2] = new SqlParameter("@MimeType", mimeType);
    oSqlParameter[3] = new SqlParameter("@Size", size);
    oSqlParameter[4] = new SqlParameter("@FileObjectsId", SqlDbType.UniqueIdentifier, 100) { Direction = ParameterDirection.Output };

    DataSet ds = DataAccess.ExecuteDataset(ConnString, CommandType.StoredProcedure, "SPInsImage", oSqlParameter);

    strFileId = ds.Tables[0].Rows[0]["FileObjectsId"].ToString();
    string strSqlPath = ds.Tables[0].Rows[0]["Column1"].ToString();
    var bytArrContext = (byte[])ds.Tables[0].Rows[0]["Column2"];

    var fileStream = new SqlFileStream(strSqlPath, bytArrContext, FileAccess.Write);
    fileStream.Write(content, 0, content.Length);
    fileStream.Close();
    oTransaction.Complete();
}// throw an TransactionAbortedException
return strFileId;

其他博客提示它是超时问题,我试图更改事务超时但它没有用。

我尝试在其他服务器上使用相同的代码并且工作正常。
我没有遇到任何数据库连接问题,但是在SqlFileStream行之后oTransaction.Complete()行上的using上下文写入{{1}}括号后,它会抛出 TransactionAbortedException 这条消息:

  

“在开始时检测到不可提交的交易   批量。该交易已回滚。这是由错误引起的   在处理FILESTREAM请求期间发生的   这笔交易的背景。“

0 个答案:

没有答案