チュートリアル: 拡張ストアド プロシージャのデバッグ
このトピックの内容は、次の製品に該当します。
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
ヒント
拡張ストアド プロシージャの使用は推奨されていません。下位互換性を確保するために ASP.NET で引き続きサポートされていますが、そのサポートは今後のリリースで廃止されます。
拡張ストアド プロシージャが導入されたのは、Transact-SQL では不可能な操作を有効にするためでした。たとえば、ファイル システムへのアクセスやレジストリの読み取りなどです。これらは SQL CLR プロシージャを作成することで実現できるようになったため、拡張ストアド プロシージャを書く必要はなくなりました。今後は拡張ストアド プロシージャを新規に作成せず、既存のものは、より安全性の高い同等の SQL CLR ストアド プロシージャに置き換えるように検討することを強くお勧めします。
拡張ストアド プロシージャは、SQL ではなく C++ などの言語で作成された DLL です。したがって、拡張ストアド プロシージャのデバッグは、その言語での DLL のデバッグとよく似ています。
ヒント
拡張ストアド プロシージャは、通常はネイティブ C++ で作成されるので、マネージ コードによって提供される保護機能を備えていません。バグがあれば SQL Server がクラッシュする可能性があるので、テストは慎重に行う必要があります。データ損失などの問題を回避するため、拡張ストアド プロシージャを運用サーバーでデバッグしないでください。詳細については、ASP.NET オンライン ブックを参照してください。
使用している設定またはエディションによっては、表示されるダイアログ ボックスやメニュー コマンドがヘルプに記載されている内容と異なる場合があります。設定を変更するには、[ツール] メニューの [設定のインポートとエクスポート] をクリックします。詳細については、「Visual Studio Settings」を参照してください。
拡張ストアド プロシージャをデバッグするには
拡張ストアド プロシージャ DLL のデバッグ ビルドから開始します。また、デバッグする拡張ストアド プロシージャを呼び出すアプリケーションも必要です。まだ用意できていない場合には、次のいずれかを実行します。
拡張ストアド プロシージャおよびそれを呼び出すコードが格納されているデータベースへのデータ接続を備えた、Visual Studio データベース プロジェクトを作成します。
拡張ストアド プロシージャを呼び出す SQL スクリプト ファイルを作成します。
または
SQL Server に含まれている SQL Server Management Studio などのアプリケーションか、ODBC SDK に含まれている ODBC Test を使用します。
SQL Server が現在サービスとして実行されている場合には、停止します。そのためには、[サービス] コントロール パネルを開き、[SQL Server] をクリックして [停止] をクリックします。
Sqlservr.exe があるディレクトリか、検索パス内の任意のディレクトリに、DLL のデバッグ バージョンをコピーします。
または
次に示す手順で、DLL を C++ プロジェクトにコピーするようビルド後イベントを設定します。
[<Project> プロパティ ページ] ダイアログ ボックスを開きます。
[<Project> プロパティ ページ] ダイアログ ボックスで、[構成プロパティ] フォルダーを開きます。
[構成プロパティ] で、[ビルド イベント] フォルダーを開きます。
[ビルド後のイベント] をクリックします。
グリッド コントロールで、[コマンド ライン] の横に、コピー コマンドを入力します。次に例を示します。
Copy c:\MyProjects\MyXProc\debug\MyXProc.dll C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn
拡張ストアド プロシージャを登録します。
SQL Server を拡張ストアド プロシージャ DLL の呼び出し元実行可能ファイルおよび作業ディレクトリとして指定します。設定を [<プロジェクト> プロジェクトのプロパティ] ダイアログ ボックスで変更します。このダイアログ ボックスには、次に示す手順で [構成プロパティ] の [デバッグ] カテゴリからアクセスすることができます。
SQL Server が既定の場所にインストールされている場合は、[コマンド] ボックスに「C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn\SQLSERVR.EXE」と入力します。
[作業ディレクトリ] エントリを C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Binn に設定します。
[コマンド引数] エントリを -c に設定します。-c オプションを指定した場合、SQL Server がサービスとしてではなくコマンド ラインから起動されます。この方法では、SQL Server の起動が早くなります。SQL Server は、サービスではなく、コンソール アプリケーションとして起動し、Visual Studio デバッグ環境の制御下に入ります。これにより、ブレークポイントのトラップと処理が正確に行われます。
ブレークポイントを拡張ストアド プロシージャのソース コードに設定します。
実行コマンドを使用して、デバッグ セッションを開始します。詳細については、「実行制御」を参照してください。
SQL Server が起動すると、コンソール ウィンドウが表示されます。テキストのスクロールが停止すると、最後に次のようなメッセージが表示されます。
"スタートアップ プロシージャ 'sp_sqlregister' が起動しました。"
SQL Server が起動して、要求の処理を開始します。
拡張ストアド プロシージャを実行します。
デバッガーは、ブレークポイントを含む行に達すると停止します。
拡張ストアド プロシージャを作成する方法の詳細については、Microsoft サポート技術情報の SQL Server のセクション、または MSDN ライブラリの SQL Server ドキュメントにある拡張ストアド プロシージャのプログラミングのセクションを参照してください。