2011-07-10 6 views
0

インタビューの質問でこれを得ました。ASP.NetとSQL Serverのバックエンドデバッグインタビューの質問

sqlバックエンドを持つasp.netページがあります。 ASPページを実行し、フォームが表示されたら、フィールドにデータを入力します。 [submit]をクリックすると、エラー/例外がスローされずにページが戻ってきます。

データベーステーブルを調べ、適切なテーブルに値が入力されていません。

この問題をどのようにデバッグしますか?

答えて

3

この問題のデバッグにはさまざまな方法があります。気になるものは、プロファイラを使用するものがいくつかあります。 SqlServerには、データベースに対して実行されているすべてのトランザクションを表示できるプロファイリングツールがあります。他のほとんどの商用データベースにも同様のものがあると思います。

あなたはasp.netを使用しているので、データアクセスロジックをテストするための豊富なデバッグツールを備えたVisual Studioが利用可能であると仮定します。

私の手順は、まず自分のコードをデバッグし、論理エラーがないことを確認することです。私はおそらく、データベースにデータを挿入し、プロシージャのパラメータにマップされているデータが正しいことを保証するストアドプロシージャを呼び出すメソッドを調べます。私はその手続きを実行し、私のコードで「飲み込んだ」例外がないことを確認します。これが合格すれば、それはデータベースに問題があると確信し、コードからprocに値を渡してプロシージャをデバッグすることを含め、ストアドプロシージャのロジックのプロファイリング/レビューに移ります。

これが役に立ちます。

+0

Profilerは私が考えなかった素晴らしい答えです。あなたの提案をありがとう。 – Csharp

1

Visual Studioを使用して、要求をDBに送信するコードの少し前にブレークポイントを設定します。デバッグモードでサイトを開始します(カッシーニを使用できる場合は簡単、それ以外の場合は実行中のIISプロセスにデバッガを接続します)。ブレークポイントがヒットしたら、シングルステップを実行し、送信されたパラメータが期待どおりであることを確認します。

そこに問題がない場合は、SQLプロファイラを使用して、DBに送信されているコマンドを確認してください。それが正しいと思われる場合は、T-SQLをSQLプロファイラからManagement Studioにコピー&ペーストし、そこから正しく動作するかどうかを確認してください。 Management Studioでは期待通りに機能しますが、アプリケーションでは機能しない場合は、関連付けられているSQL Serverのユーザー/ IDに対して可能な権限の問題を検討してください。