我有这段代码可以将图像写入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
上下文中写入后,它会抛出一个带有以下消息的TransactionAbortedException :oTransaction.Complete()
using
“在批处理开始时检测到不可提交的事务。事务已回滚。这是由在此事务的上下文中处理 FILESTREAM 请求期间发生的错误引起的。”