2009-08-07 24 views
0

私はsql server2000の暗号化されたストアドプロシージャを持っています。私はそれらを変更することはできません。典型的には、すべてのプロシージャはカーソルなどを使用して行ごとに異なるテーブルを操作します。vb.netから既知のエラーが発生したストアドプロシージャのエラー処理

クエリアナライザ画面でストアドプロシージャを実行すると、エラーがスローされますが、プロシージャはすべてのレコードが処理されるまで続きます。この動作は、クライアントが受け入れ可能です。

私はVB.net 2002のWindowsアプリケーションを使用してプロセスを自動化する必要があります。私はvb.netからプロシージャを呼び出しますが、プログラムはストアドプロシージャのエラーの最初の発生時にランタイムエラーをスローします。

すべてのレコードが処理されるまで、処理を続行するために、どのように処理し、プログラムのエラー処理を行うかを指導できますか。私はあなたの助けに非常に感謝します。

答えて

0

私は.NET 1.0でそれを行う方法がわかりません。

2.0以降では、接続のFireInfoMessageEventOnUserErrorsプロパティをTrueに設定し、 `InfoMessageイベントを処理します。しかし、MSDNのクイックチェックでは、.Net 2.01.1まで利用できないと表示されます。

0

ストアドプロシージャは暗号化されており、変更することはできません。 1つのオプションは、暗号化されたもののラッパーとして機能する別のストアドプロシージャを作成することです。

例...擬似TSQL

CREATE PROCEDURE MyWrapperProc 
(
    @MyParameters somedatatypes 
) 
EXEC MyEncrytedStoreProc @MyParameters 

その後、あなたVB.NETの呼び出しはラッパーPROCを使用して変更します。 SQL 2000にはTRY-CATCHはありません。私は、これにより、明示的にエラーを発生させない限り、暗号化されたprocをVB.NETコードにバブリングすることなく実行できるはずです。

+0

エラーは依然としてバブルアップしますが、ネストレベルに関係なく、クライアント接続に直接移動します。たった2k5 try/catchで変更できます。 –

関連する問題