問題タブ [raiserror]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
6 に答える
27834 参照

sql - 単一のプロセスで SQL Server のデッドロックをシミュレートする方法は?

クライアント側のコードはデッドロックを検出し、一定の間隔で待機してから、リクエストを最大 5 回再試行します。再試行ロジックは、エラー番号 1205 に基づいてデッドロックを検出します。

私の目標は、さまざまなストアド プロシージャ内のデッドロック再試行ロジックとデッドロック処理の両方をテストすることです。2 つの異なる接続を使用してデッドロックを作成できます。ただし、単一のストアド プロシージャ自体の内部でデッドロックをシミュレートしたいと考えています。

デッドロックにより、次のエラー メッセージが表示されます。

メッセージ 1205、レベル 13、状態 51、行 1
トランザクション (プロセス ID 66) は、別のプロセスとのロック リソースでデッドロックされ、デッドロックの犠牲者として選択されました。トランザクションを再実行します。

次のエラー メッセージが表示されますsys.messages

を使用してこのエラーを発生させることはできませんRAISERROR:

メッセージ 2732、レベル 16、状態 1、行 1
エラー番号 1205 は無効です。番号は 13000 から 2147483647 の範囲である必要があり、50000 にすることはできません。

デッドロックの再試行ロジックは、エラー番号が 1205 かどうかをチェックします。デッドロックには、通常のデッドロックと同じメッセージ ID、レベル、および状態が必要です。

(RAISERROR またはその他の手段を使用して) デッドロックをシミュレートし、1 つのプロセスだけで同じメッセージ番号を取得する方法はありますか?

データベースは SQL 2005 互換性を使用していますが、サーバーは 2005 から 2008 R2 までさまざまです。

0 投票する
1 に答える
978 参照

spring - Mybatis-SpringでSybaseRAISERRORをキャプチャする方法は?

を使用してSybaseのストアドプロシージャからJavaコードのエラーメッセージをキャプチャしようとしていますRAISERRORが、procを直接呼び出すとエラーがスローされていることがわかりますが、何もキャッチされません。

Mybatis-Springを理解しています

MyBatisの例外をSpringDataAccessExceptionに変換します

したがって、Mapperクラスを次のようにコーディングしました。

これらの例外の両方をキャッチしようとしていますが、何もキャッチされません。

誰かアイデアはありますか?

ありがとう、スティーブン

0 投票する
1 に答える
2254 参照

sql-server-2008-r2 - SQL Server は RAISERROR をスキップします

シンプルなコード。非常に奇妙な動作です。これをトリプルチェックしました。@filePath@pathNVARCHAR(260)@existsですINTdbo.WriteToFileファイルをディスクに書き込みます。この場合は空のファイルです。

このコードを初めて実行して@exists0 になると、if ブロックに入ります。ファイルは期待どおりに作成されます。ことを確認した. しかしRAISERROR ifブロックでは呼び出されません。代わりRAISERRORに if ブロックの外側だけが呼び出されます。

しかし、最初のステートメントを print ステートメントに置き換えるRAISERROR ('A')PRINT 'blabla'、期待どおりに呼び出されます。

@exists = 01=1に置き換えて最初のものをそのままにしておくRAISERROR ('A')と、すべてが正しく動作し、最初のRAISERROR ('A')ものが呼び出されます。

誰かがこれを説明できますか?

そうそう、そしてなぜ

真新しいクエリウィンドウでこれを取得します:

これは 2 回同じメッセージです。SQL サーバーが正しく構成されていない可能性がありますか?

興味があれば、手順も投稿しWriteToFileます。役立つかもしれません。この手順はWebから入手できますが、完全に機能しますが、RAISERROR動作が発生する可能性があります。

編集: SQL Server 2008 R2 の実行

0 投票する
2 に答える
3284 参照

java - Java は MS SQL Server の RAISEERROR コマンドによって発生した例外を処理できますか?

残念ながら、Java を使用して MS SQL Server でいくつかのストアド プロシージャを実行する状況に陥ってしまいました。例外が発生したときに SP で RAISEERROR コマンドを使用しています。問題は、Java がこれらの例外をキャッチできないように見えることです。私のサンプルSP:

私のJavaコード:

SP は正常に実行されますが、Java で例外はキャッチされません。

では、Java はこの種の例外を処理できますか? ここで何か間違ったことをしていますか?

0 投票する
1 に答える
7595 参照

sql - RAISERROR from Catch Block in TSQL Passed to Calling Batch - Need that Passed to Calling Application

I have been researching the TRY/CATCH block and I am a little stumped on how to pass an error the way I need to do so. From what I have read and if I understand correctly, a RAISERROR in a CATCH block in SQL will be passed to the calling batch OR the calling application. The application is running a stored procedure which has a transaction in it. The transaction is wrapped in a TRY/CATCH block. In the CATCH block, I am raising the error if something in the transaction fails causing it to jump to CATCH. If running the procedure via SSMS, the error shows up fine and the transaction rolls back. However, if the application calls the stored procedure and the same error occurs, the application never knows about the error and thus doesn't now the procedure failed.

First of all, am I understanding correctly how the RAISERROR in CATCH works? If so, how can I get that error raised back to the calling application?

I am Running Windows 7, SQL Server 2005

0 投票する
2 に答える
2856 参照

sql-server - TRIGGER ROLLBACK のカスタム メッセージ?

SQL Server にトリガーがあり、条件が発生したときにトリガーする必要がありROLLBACKます。問題は、カスタム メッセージを設定する必要があることです。

しかし、それは2つのエラーを発生させます

メッセージ 50100、レベル 16、状態 1、プロシージャ tU_COM_Proposta、行 42
カスタム メッセージ
メッセージ 3609、レベル 16、状態 1、行 1
トランザクションはトリガーで終了しました。バッチは中止されました。

カスタムエラーのみを発生させ、同時にトリガーのトランザクションをロールバックする必要があるようにするにはどうすればよいですか?

0 投票する
1 に答える
6577 参照

java - javaがmssqlストアドプロシージャをキャッチしていませんエラーが発生します

SQL Server 2008データベースにストアドプロシージャがあり、sqljdbc4接続を使用するJavaアプリケーションを開発しています。プロシージャの呼び出しも含めてすべて正常に動作しますが、1つだけあります。場合によっては、javaは、プロシージャによってスローされ、selectやupdate(delete insert)などの呼び出しがあるときに指定された発生した例外をキャッチしません。

ここに例があります

この場合、Javaは例外をキャッチします

しかし、私がこのような選択を使用するとき

または更新の場合、Javaは例外をキャッチせずに実行を続行します。それは、手順の終了を待たないようなものです。

だから私の質問は、私はストアドプロシージャを間違って使用しているのか、それともjdbcドライバのバグなのか、それともoutパラメータを使用してこの戦略を残すことを好むのかということです。私は何も見つけずにこの問題をグーグルで検索しました。

個人的には、発生したエラーを使用したい

0 投票する
0 に答える
105 参照

asp.net - 検証でエラーが発生しました。どうすれば終了できますか

ユーザーが

保存ボタンは、私のdbEngineClassで関数 save() を呼び出します。

ユーザーが重複データを入力すると、特定のエラーが発生し、Web ページで処理されます

特定のメッセージボックスを表示するが、その後、クラスを終了して実行しないようにしたい

他に何か

しかし、どうやらbtnsave.clickサブの実行を継続するようです

エラーが発生した場合、クラスを終了したり、クリック メソッドが続行されないようにするにはどうすればよいですか?

これが私のコードです:これは情報を保存してイベントを発生させる関数です

そして、これが私がWebページでそれを処理する方法です

このハンドラーが終了したら、終了する必要があり、btnSave.click を続行しないでください。

SaveNewCustomer() サブルーチンを呼び出すハンドラーは、続行するとすべての

データと私はそれをしたくない

0 投票する
0 に答える
621 参照

sql - 重大度とデータベース権限が 20 を超える RAISERROR

INSTEAD OF トリガーを SQL Azure db にデプロイしようとしています。特に、次の行を実行する可能性があります。

Sql Server で重大度が 20 以上の場合は、'with log' コマンドが必要で、これには ALTER TRACE 権限が必要です。わかりました、問題ありませんが、Sql Azure ユーザーにそれを実行するためのアクセス許可を付与する方法がわかりません。sp_addrolemember は、Sql Azure ではサポートされていません。

次のあいまいなメッセージで失敗します。

メッセージ 40520、レベル 16、状態 1、行 1 セキュリティ保護可能なクラス 'サーバー' は、このバージョンの SQL Server ではサポートされていません。

上記のエラーをグーグルで調べてもほとんど見つかりませんでした。これに関する MSDN のドキュメントはかなりあいまいです。

0 投票する
1 に答える
511 参照

sql - プロシージャを中止しないRaiserrorレベル16

こんにちは、valid という名前のテーブルに batch_id が存在するかどうかを確認するストアド プロシージャがあります。存在する場合は、残りの手順を中止します。私は持っている

ただし、残りの手順は中止されません