2010-12-28 9 views
2

私はSybase/Delphi環境でBDEを使用してDBサーバーに接続していました。私たちは、現在実行中のストアドプロシージャの名前が与えられているので、現在実行されているsprocの行を教えてくれる小さなDelphiアプリケーションを持っていました。これは、ぶら下がっているように思えるsprocsのデバッグには非常に便利でした。SQL Serverで現在実行中のsprocの行番号を取得できますか?

この機能をSQL Serverで使用したいと思いますが、SybaseまたはBDEの機能のいずれかを覚えていません。この機能はSQL Serverで使用できますか?その場合、この情報を表示するにはどのコマンドを使用する必要がありますか?

答えて

6

あなたは

SELECT 
    CASE 
     WHEN statement_end_offset = -1 
     THEN text 
     ELSE SUBSTRING(text,statement_start_offset/2,(statement_end_offset- statement_start_offset)/2) 
    END, 
    statement_end_offset, statement_start_offset 
FROM sys.dm_exec_requests 
CROSS APPLY sys.dm_exec_sql_text(sql_handle) 
WHERE session_id = 53 --Or whatever! 

statement_start_offsetstatement_end_offsetのようなものを使用することができ、現在ではなく、行番号よりも実行されているステートメントにマップする文字オフセットです。

1行に複数の実行可能ステートメントを含めることができ、1つのステートメントは複数の行にまたがることができます。

2

SQL Server 2008を使用している場合は、C#コードをデバッグするのと同じように、ストアドプロシージャをデバッグできます。ブレークポイントを設定し、ステートメントごとにステートメントを実行することができます。これはSSMS内から行うことができます。

関連する問題