我有一個過程,在我們的業務中運行時間以外。該過程偶爾會在刪除語句中失敗。刪除語句通過實體框架執行(我不知道這是否重要),並且還存在級聯刪除。SQL Server刪除語句計時
我們得到的錯誤如下:超時過期。
操作完成之前已經過去的超時時間 或者服務器沒有響應。該語句已終止。
我試圖找出可能導致這種情況的原因。我發現我們有另一個進程在同一時間運行,從一個視圖中選擇相同的文件中的數據,這些文件正在進行刪除。可以閱讀這個視圖「阻止」刪除?
public void DeletePolicySegments(IList<int> segmentIds)
{
using (Models.PolicyContainer context = new Models.PolicyContainer())
{
if (segmentIds != null && segmentIds.Count > 0)
{
foreach (var segmentId in segmentIds)
{
var x = context.PolicySegments.Where(t => t.SegmentId == segmentId).Single();
context.PolicySegments.DeleteObject(x);
}
context.SaveChanges();
}
}
}
每次調用「DeletePolicySegments」只應刪除2-4「段」。
你可以給我們DELETE代碼嗎? –
檢查以查看錶是否被鎖定... http://stackoverflow.com/questions/1511675/how-to-check-if-a-table-is-locked-in-sql-server –