3

特定のユーザーで「タイムアウトが発生しました」というエラー メッセージで常に失敗するストアド プロシージャがあります。

他のすべてのユーザーは問題なく sp を呼び出すことができます。また、クエリ アナライザーを使用して通常どおり sp を呼び出すこともできます。わずか 10 秒で終了します。ただし、問題のユーザーの場合、ASP が常に約 5 分間ハングした後、タイムアウトで中断することがログに示されています。

EXEC SP_TV_GET_CLOSED_BANKS_BY_USERS '006111'" "のように ASP ページから呼び出します。

問題を診断する方法を知っている人はいますか?DB のデッドロックを調べてみましたが、何も見つかりませんでした。

ありがとう、

4

5 に答える 5

5

いくつかの考え...

コメントを読むと、パラメータスニッフィングが問題の原因であることがわかります。

  • 他のユーザーの場合、キャッシュされたプランは、送信するパラメーターに対して十分です。
  • このユーザーの場合、キャッシュされたプランはおそらく間違っています

これは、このユーザーが他のユーザーよりもはるかに多くの行を持っている場合、または別のテーブルに行がある場合に発生する可能性があります(したがって、別のテーブル/インデックスシーク/スキャンの方が適しています)

パラメータスニッフィングをテストするには:

  • 呼び出しまたはdefで(一時的に)RECOMPILEを使用します。複雑なクエリの場合、これは遅くなる可能性があります
  • タイムアウト後にインデックス(または統計のみ)を再構築して、再試行してください。これにより、キャッシュされたすべてのプランが無効になります

修正するには:パラメータをマスクします

DECLARE @MaskedParam varchar(10)
SELECT @MaskedParam = @SignaureParam

SELECT...WHERE column = @MaskedParam

「パラメータスニッフィング」と「パラメータマスキング」をグーグルで検索するだけです

于 2008-11-09T08:13:13.753 に答える
0

SQL Server Profiler を使用して新しいセッションを開くことをお勧めします。ASP ページからストアド プロシージャを呼び出して、何が起こっているかを確認します。これで問題が解決するわけではありませんが、独自の「調査」を実行するための出発点となることは間違いありません。

于 2008-11-08T12:41:46.597 に答える
0

あなたの質問に答えるには、もう少し情報が必要かもしれません。

たとえば、Active Directory を使用してユーザーを認証していますか? SQL プロファイラーを使用して調査しましたか? SQL Server がこの特定のユーザーの認証に問題を抱えている場合、認証の問題である可能性があるようです。

于 2008-11-07T18:51:33.997 に答える
0

デッドロックの問題のように思えます..

また、このユーザーが SQL Server で実行権限と読み取り権限を持っていることを確認してください

しかし、その時点で情報が読み取られようとして書き込まれている場合、トランザクションがまだコミットされていないため、デッドロックになります。

Jeff は、それと stackoverflow に関する彼の経験について素晴らしい投稿をしました。 http://www.codinghorror.com/blog/archives/001166.html

于 2008-11-07T18:57:18.290 に答える
0

いくつかの確認事項:

  1. これはその特定のユーザーのマシンでのみ発生しますか? 彼は別のマシンからそれを試すことができますか? - クライアントの構成に問題がある可能性があります。
  2. この特定のユーザーが実行する実際の文字列をキャプチャして、ASP ページから実行できますか? ユーザーが SP を実行すると、ループまたは大量のデータ負荷が発生する可能性があります。
  3. 最後に、組織内アプリケーションを使用している場合、特定のユーザーのアクセス許可が他のユーザーと異なる可能性があります。それらを Active Directory レベルで比較できます。

今、あなたの問題を確実に解決する商用ソフトウェアをお勧めします。エンドツーエンドのトランザクションを記録し、特定の障害を分析します。しかし、私はこのフォーラムで宣伝したくありません。よろしければ、メモを残していただければ、詳しく説明します。

于 2008-11-08T04:15:02.097 に答える