ストアド プロシージャを実行してテーブル内のレコードを更新すると、タイムアウト エラーが発生するという問題が発生しています。私はもともと MVC3 アプリケーション内からストアド プロシージャを呼び出していましたが、そこで最初にエラーに気付きました。
しかし、SQL Server プロファイラーを使用して、ADO.NET によって生成されたコードをコピーし、データベース上で直接実行することができました。このクエリを約 5 分間実行しましたが、それでも何も返されませんでした。
ここにいくつかの事実があります:
ストアド プロシージャには、渡される約 100 個の引数があります。
私の MVC アプリケーション、SSMS、および Sql Server 2008 はすべて同じマシンにインストールされています。
ストアド プロシージャは、約 5000 エントリを含むテーブル内の 1 つの行を更新しようとします。
LastModifiedDate
とを更新するトリガーがありましたが、CreatedDate
これらのトリガーを削除し、EDMX を更新して、これらのトリガーによって引き起こされる無限ループがあるかどうかを判断しました。私たちのライブ サーバーは、実行しようとしているものとまったく同じストアド プロシージャ (クラシック ASP を使用) を実行し、正しい結果を達成します。さらに、ライブ サーバーは .NET で同じストアド プロシージャを実行できません。
私のマシンは、従来の ASP と ASP.NET の両方のストアド プロシージャを実行できません。
ストアド プロシージャは、いくつかの行でのみ失敗したようで、他の行は完全に正常に動作します。
ストアド プロシージャに渡されるパラメータの値を変更しようとしました
他のストアド プロシージャは正常に動作します
ストアド プロシージャが更新しようとしていた特定のテーブルがロックされているようです。これは、このクエリの実行を待機している場合でも、他のクエリの実行が正常に機能していたためです。
私が実行できる他のテスト、またはタイムアウトエラーの根本原因を特定するために使用できるツールについて誰かがアイデアを持っている場合。
ありがとう。
PSコマンドタイムアウトプロパティを変更するように言わないでください。これをゼロに設定しようとしました!