|
分類:[.NET 全般]
Visual Studio 2005 C# DB:SQL Server 2005
以下のソースで今までは問題なく処理できていたのですが
本日、BBBTableのロック?が発生してしまい、SQL Server ManagementStudioからもテーブルが開けず、
「タイムアウトに達しました。操作が完了する前にタイムアウト期間が過ぎたか、またはサーバーが応答していま・・・」
というメッセージが出ます。その他のテーブルは開けます。
どの部分に問題があるのでしょうか。
----------------------------------------------------------------------------------------------------------------
try
{
//トランザクション
using (TransactionScope tranScope = new TransactionScope())
using (SqlConnection conn = new SqlConnection(Database.settings.DBSETConnection.ConnectionString))
{
//コネクション生成
conn.Open();
AAATableAdapter adpAAA = new AAATableAdapter();
adpAAA.Connection = conn;
BBBTableAdapter adpBBB = new BBBTableAdapter();
adpBBB.Connection = conn;
CCCTableAdapter adpCCC = new CCCTableAdapter();
adpCCC.Connection = conn;
AAADataSet.AAADataTable dtAAA = adpAAA.GetTargetDataBy(引数);
for (int i = 0; i < dtAAA.Rows.Count; i++)
{
AAADataSet.AAARow rowTARGET = (AAADataSet.AAARow)dtTARGET.Rows[i];
AAADataSet.BBBDataTable dtBBB = adpBBB.GetTargetDataBy(rowTARGET.キー);
for (int j = 0; j < dtBBB.Rows.Count; j++)
{
//フラグ更新
dtBBB.Rows[j][○○○] = false;
}
adpBBB.Update(dtBBB);
}
//対象データ取得
AAADataSet.AAADataTable dtAAA = adpAAA.GetTargetDataBy(nendo);
//文字コード設定
System.Text.Encoding enc = System.Text.Encoding.GetEncoding("shift_jis");
//ファイル名に日付追加
string filePath = Environment.CurrentDirectory;
//ファイル名に日付追加
filePath += "\\abcde_" + DateTime.Today.ToString("yyyyMMdd") + ".log";
StringBuilder sbErr = new StringBuilder();
sbErr.AppendLine("****************************************************************************************");
sbErr.AppendLine("処理日時 : " + DateTime.Now.ToString());
sbErr.AppendLine("****************************************************************************************");
for (int i = 0; i < dtAAA.Rows.Count; i++)
{
AAADataSet.AAARow rowAAA = (AAADataSet.AAARow)dtAAA.Rows[i];
AAADataSet.BBBDataTable dtBBB = adpBBB.GetTargetDataBy(rowAAA.キー);
//対象データの判定
if (rowAAAの判定内容判定)
{
for (int j = 0; j < dtSYO.Rows.Count; j++)
{
AAADataSet.BBBRow rowBBB = (AAADataSet.BBBRow)dtBBB.Rows[j];
//更新
rowBBB["あ"] = true;
adpBBB.Update((DataRow)rowBBB);
}
}
else
{
for (int j = 0; j < dtBBB.Rows.Count; j++)
{
AAADataSet.DBBBRow rowBBB = (AAADataSet.DBBBRow)dtBBB.Rows[j];
rowBBB["い"] = false;
adpBBB.Update((DataRow)rowBBB);
}
}
}
sbErr.AppendLine("終了");
//ファイルの末尾に内容を追加
System.IO.File.AppendAllText(filePath, sbErr.ToString(), enc);
//完了
tranScope.Complete();
//終了報告
Console.WriteLine("処理終了");
}
}
catch (Exception e)
{
//エラー報告
Console.WriteLine(e.Message + "の例外が発生しました。" );
}
finally
{
//しばらく表示
Thread.Sleep(TimeSpan.FromSeconds(5.0));
}
|