現在、私の Windows サービスは 1 日に約 1500 のトランザクションを処理しています。約 1 週間に 1 回、LINQ を使用して行った挿入でランダムなタイムアウト例外が発生します。
例外は次のとおりです。
Exception (SqlException) System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.
Linq クエリは次のとおりです。
dc.TransactionLoggings.InsertOnSubmit(new TransactionLogging()
{
DateAdded = DateTime.UtcNow,
InputMessage = message,
DocId = documentID.ToString(),
TransactionStatus = transactionStatus
});
dc.SubmitChanges();
これを診断するために何をすべきかについてのアイデア/提案はありますか??
助けてくれてどうもありがとう、フィオナ
アップデート
テーブル構造は次のとおりです。
CREATE TABLE [dbo].[TransactionLogging](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[InputMessage] [nvarchar](max) NULL,
[CCHMessage] [nvarchar](max) NULL,
[DocId] [char](20) NOT NULL,
[TransactionStatus] [char](5) NOT NULL,
[DateAdded] [datetime] NULL,
[LastUpdate] [datetime] NULL,
[SentDate] [datetime] NULL,
CONSTRAINT [PK_TransactionLogging] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF、STATISTICS_NORECOMPUTE = OFF、IGNORE_DUP_KEY = OFF、ALLOW_ROW_LOCKS = ON、ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY
さらに、最新の 2 つのトランザクション タイムアウトは、その日の最初のトランザクションで発生しました。これは偶然ではありません。
また、私のコードに対する次の更新について誰かが考えているかどうか疑問に思っています:
コメントはありますか?!!!
using (MiddlewareDBDataContext dc = new MiddlewareDBDataContext(ConfigurationWrapper.ActivityLoggingDatabase_ConnectionString))
{
dc.TransactionLoggings.InsertOnSubmit(new TransactionLogging()
{
DateAdded = DateTime.UtcNow,
InputMessage = message,
DocId = documentID.ToString(),
TransactionStatus = transactionStatus
});
try
{
dc.SubmitChanges();
}
catch (SqlException ex)
{
//Wait for 30 seconds then retry..
System.Threading.Thread.Sleep(30000);
dc.SubmitChanges();
}
}