3

SQL 2005とtry-catch機能を使用して、DB内のすべてのエラー処理を処理しています。現在、DBでいくつかのWCF呼び出しを行うための.NETCLR関数の展開に取り組んでいます。このWCFプロシージャはCLRで記述され、SQLに展開されます。try-catchブロックをCLRコードに入れると、エラーを正常にキャッチします。ただし、SQLのtry-catchブロックまでエラーをスローできないようです。SQLは私が投げたものを無視しているようで、見つけたエラーをキャッチします。2つの間に関係はありません(つまり、私は一方から他方に投げることができませんか?)

CLR内からSQLの呼び出しプロシージャにスローできる場合、特別なフォーマットが必要ですか?スローされたエラーをキャッチしてから別のエラーをスローするという特定のケースを試しましたが、SQLはスローされたエラーを無視し、スローされたエラーを無視するかのように元のエラーをキャッチしました。

4

1 に答える 1

2

これは、高レベルでそれをカバーするブログ投稿です:SQLCLRでの 例外処理

SQLサーバーがCLRに実装されたユーザー関数/プロシージャ/トリガー(つまり、マネージコード)を実行するときに、ユーザーコードの周囲にマネージ例外ハンドラーをインストールします。したがって、ユーザーコードが例外をリークした場合、サーバーはそれをキャッチし、ユーザー例外をラップするTSQL例外をスローします。

これは、それが正しく機能することを意味しているようです。

于 2008-09-23T18:44:48.330 に答える