SQL Serverのストアドプロシージャのトラブルシューティングにはどのような方法がありますか?どこから始めるのですか?ストアドプロシージャのトラブルシューティング方法?
答えて
複雑なストアドプロシージャのトラブルシューティングは、実行するかどうかを判断するだけでなく、実行されないステップを見つけることよりもはるかに重要です。最も重要なことは、実際にコアテストの結果を返すのか、正しいアクションを実行するのかです。
2つの種類のストアドプロシージャがあります。まず、動的SQLを作成するproc。 @debugの入力パラメータなしでこれらのうちの1つを作成することはありません。このパラメータが設定されている場合、私はprocがSQlステートメントを実行したものとして表示し、実行しません。ほとんどの場合、生成されたSQLコードで構文エラーが表示されるため、すぐに問題が発生します。また、このSQLコードを実行して、期待するレコードが返されているかどうかを確認することもできます。
データに影響するステップが多い複雑なprocsでは、@test入力パラメーターを使用します。 @testパラメータで行うことは2つあります。まず、開発の失敗がデータを壊さないように、アクションをロールバックします。次に、ロールバックする前にデータを表示して、結果がどのようなものかを確認します。 (これらは実際には逆の順序で表示されますが、私はこの順序で考えています)
これで、データに永久に影響を与えることなく、テーブルに何が入っているのか、テーブルから削除されたのかを確認できます。場合によっては、データの一部をアクションの前と同じように選択してから、それを後で選択ランと比較することもあります。
最後に、複雑なprocのアクションをログに記録し、何が起きたかを正確に確認したいことがあります。 procがエラーを起こした場合、それらのログをロールバックしたくないので、私はprocの始めに必要なログ情報のテーブル変数を設定します。各ステップの後(または何をログに記録するかによってエラーが発生した後)、このテーブル変数に挿入します。ロールバックまたはコミットステートメントの後、テーブル変数の結果を選択するか、またはこれらの結果を使用して永続ロギングテーブルにログします。これは、実行されたSQLをログに記録できるため、動的SQLを使用していて、何か奇妙なものがprodで失敗したときに、失敗したときに実行されたステートメントのレコードがある場合に特に便利です。これは、ロールバックで範囲外にならないため、テーブル変数で行います。
- ストアドプロシージャの外部にあるそれぞれ
SELECT
ステートメント(存在する場合)をテストして、期待どおりの結果が返されるかどうかを確認します。 INSERT
とUPDATE
をできるだけ単純にします。- あなたのSPの外にインサートとアップデートをテストして、期待どおりの結果が得られているかチェックできるようにしてください。
- SSMSエクスプレス2008
のVisual Studio 2010分の2008で提供デバッガを使用してデバッグ機能を持っています。 「サーバーエクスプローラ」でSQL Serverインスタンスに接続し、ストアドプロシージャを参照するだけです。
Visual Studio 'テスト版'は、ストアドプロシージャの周りに単体テストを生成することもできます。
SSMSでは、プロシージャを開き、メニューバーの[実行]ボタンの横にあるチェックマークボタン([解析])をクリックするだけで簡単に開始できます。見つかったエラーを報告します。
エラーがなければ、プロシージャを実行することは無害です(テーブルに挿入するのではなく、一時テーブルを作成するだけです)。CREATE PROCEDURE x(またはALTER PROCEDURE x )、その部分をコピーしてすべてのパラメータを宣言し、有効な値で定義します。次に、それを実行して何が起こるかを確認します。
多分これは簡単ですが、それは始める場所です。
- 1. DSXスケジュールノートブックのトラブルシューティング方法
- 2. 木場タイムアウトのトラブルシューティング方法
- 3. ASP.NET MVCのトラブルシューティング方法
- 4. Visual Studio 2012のハングアップ/ロックアップのトラブルシューティング方法
- 5. ssisのジョブ障害のトラブルシューティング方法
- 6. Axis 2のエラーのトラブルシューティング方法
- 7. Linuxでのスレッド問題のトラブルシューティング方法
- 8. Androidデバッガの問題のトラブルシューティング方法
- 9. Microsoft Graph認証のトラブルシューティング方法
- 10. 「World Wide Webサービス(http)」エラーのトラブルシューティング方法
- 11. Android USBデバイスドライバのトラブルシューティング/インストール/修理方法
- 12. IntelliJ Gradleインテグレーション - 低速グラードリロードのトラブルシューティング方法
- 13. サーバレスIAM権限のトラブルシューティング方法
- 14. Occassional 500 Internal Server Errorのトラブルシューティング方法
- 15. 目的C NSCoreDataOptimisticLockingExceptionのトラブルシューティング方法
- 16. mqttとAWS iotのトラブルシューティング方法
- 17. iOS UIWebView DOM Exception 18のトラブルシューティング方法
- 18. 尋問用ブランク画面のトラブルシューティング方法
- 19. ストアドプロシージャ構文のエラーをトラブルシューティングするMySQL/MariaDB
- 20. エラー80004005:これをトラブルシューティングする方法?
- 21. セットアップ方法MYSQLストアドプロシージャのログ
- 22. ストアドプロシージャの使用方法は?
- 23. mysqlの別のストアドプロシージャからストアドプロシージャを呼び出す方法は?
- 24. MVC Web APIのこの500エラーのトラブルシューティング方法
- 25. Linuxの応答しないJavaアプリケーション/プロセスのトラブルシューティング方法
- 26. Pythonのマルチプロセッシングにおける "AttributeError:__exit__"のトラブルシューティング方法
- 27. SBTのライブラリ依存性警告のトラブルシューティング方法
- 28. Azure Webサービスへの失敗したリクエストのトラブルシューティング方法
- 29. Paypal Vaultのクレジットカードのチャージに関するトラブルシューティング方法
- 30. 自動ロードされたHTTP/Request2コードのエラー、コンポーザーのトラブルシューティング方法
私はそれを知らなかった、あなたはvs2010を介してSQL Serverに接続する方法を知っていますか?私にステップを提供したり、話しているブログに私をリダイレクトしたりできます。 –
このリンクは、プロセス全体を説明しています。http://support.microsoft.com/kb/316549 – Andrew