口座明細書を取得するために使用されるため、非常に頻繁に呼び出されるストアド プロシージャがあります。実際のストアド プロシージャは、MSSMS のクエリ ウィンドウで約 10 ミリ秒かかり、通常は正常に動作しますが、私の VB6 アプリケーションでは SOMETIMES がタイムアウト (タイムアウトを 120 秒に設定) することにしました。SP は、現在のトランザクションを含むデータベース (DB #1) とアーカイブされたトランザクションを含むデータベース (DB #2) の 2 つのデータベース間でテーブルを結合します。「sp_who2」を使用すると、SPID がシステムを独占またはブロックしているようには見えません。
これは私が設定したSQL変数です:
DECLARE @rtnRecs int;
strSQL = "EXEC spA_StatementData
@sAccountNr = '123abc',
@bIncludeHistory = 1,
@bShowAllTransactions = 1,
@iValidRecords = @rtnRecs OUTPUT"
私がVB6で使用する方法は次のとおりです。
rs.Open sql, con, adOpenStatic
ここで、rs は ADODB.Recordset であり、con はデータベースへの接続です。
このコードは長期間 (たとえば 2 か月間) うまく機能し、複数のオペレーターによって使用されます。その後、明らかな理由もなく突然動作を停止しますが、MSSMS では引き続き正常に動作します。問題が最初に発生した場所として VB6 を強調していますが、私の VB.net コードでも同じことが起こっています。
注意すべきことの 1 つは、「@bIncludeHistory」パラメーターが、JOIN をアーカイブ データベース (DB #2) に設定する条件であることです。「@bIncludeHistory」が 0 に設定されている場合、タイムアウトは発生しません。
サービスをリセットするとうまくいきますが、それは最後の手段です。他に試せることはありますか?ありがとう