【发布时间】:2013-12-23 11:48:05
【问题描述】:
我有这个功能,它可以更新 Azure SQL DB 上的一些记录。该函数每 10 分钟由一个计时器调用一次:
static public bool CaricaOccupazioniiMae(DataTable dtOccupazioni)
{
using (SqlConnection conn = new SqlConnection(GetSQLAzureConnectionStringiMae()))
{
conn.Open();
using (SqlTransaction tr = conn.BeginTransaction())
{
using (SqlCommand SQLCmd = new SqlCommand("DELETE_t_Promemoria", conn))
{
try
{
SQLCmd.CommandType = CommandType.StoredProcedure;
SQLCmd.Parameters.Add("@CodScuola", mCodiceScuolaiMae);
SQLCmd.Transaction = tr;
SQLCmd.ExecuteNonQuery();
}
catch (System.Exception ex)
{
tr.Rollback();
tr.Dispose();
return false;
}
}
using (SqlBulkCopy SQLCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tr))
{
try
{
SQLCopy.DestinationTableName = "t_Promemoria";
SQLCopy.WriteToServer(dtOccupazioni);
}
catch (System.Exception ex)
{
tr.Rollback();
tr.Dispose();
return false;
}
}
tr.Commit();
}
conn.Close();
}
return true;
}
在两次情况下,函数只是挂在那里......我唯一确定的是,它没有到达这个块,同时它通过了 conn.open():
SQLCmd.CommandType = CommandType.StoredProcedure;
SQLCmd.Parameters.Add("@CodScuola", mCodiceScuolaiMae);
SQLCmd.Transaction = tr;
SQLCmd.ExecuteNonQuery();
所以合乎逻辑的结论是它挂在这 2 点之一:
1) SqlTransaction tr = conn.BeginTransaction()
2) SqlCommand SQLCmd = new SqlCommand("DELETE_t_Promemoria", conn);
你有什么线索吗?
提前致谢!
【问题讨论】:
-
每次删除多少数据?
-
不超过 300 行...这可能是原因吗?未命中 executenonquery...
-
我很确定,因为我在 "conn.open()" 之后添加了一个日志写入并且它被命中了,但另一个就在 QLCmd.CommandType = CommandType.StoredProcedure 之前;没有被击中
-
现在我绝对确定代码挂在: using (SqlTransaction tr = conn.BeginTransaction())
标签: c# sql-server azure-sql-database