我正在处理的项目中遇到一个奇怪的问题:
我将文件上传到表中,作为varbinary,如下所示,但ExecuteNonQuery卡住了大约一分钟。
cmd.Parameters.Add("@FichierBinary_IN", SqlDbType.VarBinary, -1).Value = data;
cmd.ExecuteNonQuery();
奇怪的是,当我手动选择数据库时,我可以看到该行已在几秒钟内成功创建,而执行仍然挂起。
select top 1 * from [Actions].[ItemFichier]
order by IdItemFichier DESC
我调用的存储过程非常简单:只需在表中插入一个,而不需要任何逻辑。当我在SSMS中手动运行插入时 通过SQL profiler可以获得的副本,几乎可以立即执行。
这个问题可能是什么原因?
编辑:添加了数据库呼叫代码
byte[] data = null;
MemoryStream target = new MemoryStream();
fichier.InputStream.CopyTo(target);
data = ImageHelper.ScaleImage(target.ToArray(), 1024, 1024);
var objParametre = new{
FichierNom = fileName,
MimeType = mimeType,
Extension = ext,
IdAction = idAction,
IdVariance = idVariance,
FichierParentItemType = paramFichierParentItemType,
IdParentTemp = idParentTemp
};
using (SqlCommand cmd = AppUTrakk.Current.SqlHelper.CreateCommand("Actions.pAddSetItemFichier", objParametre))
{
cmd.CommandTimeout = 180;
cmd.Parameters.Add("@FichierBinary_IN", SqlDbType.VarBinary, -1).Value = data;
cmd.ExecuteNonQuery();
}
AppUTrakk.Current.SqlHelper.CreateCommand只是用一些默认参数创建SqlCommand / connection,而fichier是一个HttpPostedFileBase。