問題タブ [sqltransaction]
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.
c# - キープアライブ SQL トランザクション
SQL トランザクションに単純な問題があります。メソッド A でデータベースに接続し、SQL トランザクションを開始します。メソッドの最後で、計算 (外部メソッド) に時間がかかるため、接続を閉じます。
計算が終了したら、トランザクションをコミットまたはロールバックしたいのですが、同じ接続が必要です。
それを実行する他の可能性はありますか?
sql - (SQL-T-SQL) 特定の値のみを持つコマンドを選択しますか?
ここに私のテーブルapp_extraがあります:
AppID;AppExtraID
100;0
100;1
100;3
100;7
100;8
100;9
110;0
110;2
110;4
110;7
110;9
115;0
115;2
115;6
115;8
120; 0
120;1
120;10
130;0
130;7
130;8
130;10
140;0
140;1
140;3
150;0
150;2
150;6
150;7
150;8
150;10
160;0
160 ;8
160;10
165;0
165;8
165;10
170;0
170;2
170;8
170;10
180;0
180;1
180;5
180;7
180;10
185;0
185;1
185;7
185;10
190;0
190;2
9 と 10 の AppExtraID を持たないAppID だけを持つ方法を知りたい
ありがとう!
c# - 私の取引で何が間違っているのか誰か教えてもらえますか
こんにちは、データを挿入するために次のトランザクションを作成しましたが、例外が発生すると、例外を取得したデータのみがデータベースに挿入されず、残りのすべてが挿入されます
これは私が書いたものです
2 番目の条件に失敗してトランザクションをロールバックしようとしましたが、最初のステートメントがDB
.. に挿入されています。これを克服するにはどうすればよいですか
sql-server - ネストされたトランザクションを使用したSQLTry/Catchロジック
次のsprocは、この記事のテンプレートに従って実装されています。例外処理とネストされたトランザクション。このsprocはデッドロックを処理することになっており、すでにトランザクションを作成している別のsprocによって呼び出されます。次の例外が発生するため、内部トランザクションのBEGIN/COMMITの一部のマジックが一致しませんTransaction count after EXECUTE indicates a mismatching number of BEGIN and COMMIT statements. Previous count = 1, current count = 0
。私が理解している限り、catchは実行され、@xstate = -1
trueであり、外部トランザクション全体がロールバックされます。
不一致が発生するアイデアはありますか?
c# - エラー時にアプリケーションがクラッシュする原因となるSqlTransaction?
背景をいくつか説明します。定期的にサイトがクラッシュし、IIS を再起動しなければならなくなります。これはほとんどの場合、DLL にパッチを適用してから 1 時間以内に発生します (Web アプリケーション プロジェクトではなく Web サイト プロジェクトを使用するため、各 ASPX ページは個別の DLL です)。
いくつかの調査を行った結果、自作の DAL は、デバッグ中に、ストアド プロシージャで SQL エラーが発生した場合、Visual Studio を備えた組み込み Web サーバーの動作を実際に停止し、シャットダウンする可能性があることを発見しました (つまり、それだけではありません)。ブラウザに表示される例外をスローすると、実際には Web サーバーでエラーが発生したため、閉じる必要があると表示されます!)
さらに掘り下げると、エラーは DAL 内のすべて (Select ステートメントを含む) のトランザクションの使用に関連しているようです。何が起こっているように見えるかは次のとおりです。
- ストアド プロシージャを実行しようとしましたが、列がない/無効である、またはその他のエラーが原因でストアド プロシージャが失敗しました。
- アプリケーション コードはエラーをキャッチして再スローします (悪いことですが、これは私が書いたものではありません)。
- トランザクションは例外にもかかわらずコミットを試み、行
NullReferenceException
上にを取得します (トランザクション オブジェクトがあるため、プロパティ上にあるようです)。また、この NullRef はキャッチできないようです (無効な Sproc で強制的にクラッシュしたデモを試してみましたが、エラーを出力してもその型が.transaction.Commit()
Connection
System.NullReferenceException
- トランザクションは、「トランザクションが完了し、使用できなくなりました」のようなエラーをスローします。
- ??? しかし、VS Web サーバーがクラッシュします。この部分のデバッグは、上記の例外でハングしているようで、メソッドを離れることはありません。
これが IIS のクラッシュの原因かどうかはわかりませんが、かなり疑わしいようで、いずれにしても明らかなエラーです。
以前にトランザクションを扱ったことがなく、それらの基本的な考え方しか持っていなかったので、私の最初の質問は、例外がスローされた後にトランザクションがまだコミットしようとしているのはなぜですか? 私の 2 番目の質問は、コミットの失敗と、おそらくサーバーが停止するまでの例外の無限ループを修正する方法です。次のようなものを追加するのは理にかなっていませんか (メソッドは という名前の SqlTransaction パラメーターを取りますtransaction
):
その小さな変更で、IIS をクラッシュさせていると思われる絶え間ない例外ループが修正されるでしょうか? DAL 自体は非常に脆く、何百ものファイルで具体的に使用されているため、最初から正しく書き直すことはできません。
編集コードブロック全体は次のとおりです(これもレガシーコード-古いMicrosoftデータアクセスブロックヘルパーを使用しています):
ただし、catch ブロックが実行されると、トランザクションは引き続きコミットを試み、これがハングアップの原因になっているようです。
.net - SqlTransaction は Dispose を呼び出す必要がありますか?
SqlTransaction の finally ブロックで dispose を呼び出す必要がありますか? 開発者がどこでも USING を使用しなかったふりをして、ただ try/catch します。
php - PHPの失敗を使用したSQLトランザクション
これは私のコードです。これは簡単なはずですが、どういうわけか、SQLは解析エラーを返します。助けてください。
SQLは次の解析エラーをスローします:
解析エラー:構文エラー、予期しない')'、予期している'、'または';' opt / lampp / htdocs / New / Feedback / WebsiteRoot/FormExitPostSuccess.phpの20行目
私のコードの20行目は次のとおりです。$q1= mysqli_query($ link、$ query);
編集:配列_POSTのすべての値はラジオボタンからのものです。検証はまだ必要ですか?
sql - 大きな数値を varchar の例として変換しないようにする方法 1444092 は 1.44409e+006 です
これが私の最後の質問です
しかし、大きな数字は何かを1.44409e + 006として変換し、インディケータに単語のporcentajeが含まれている場合、これが計算され、文字 '%'が追加され、変換されますが、このバグが発生しました
SQL 2005に取り組んでいます
sql - SQL Server-挿入が多い長いトランザクションのパフォーマンスを改善するためのより良い代替手段はありますか?
画面上でのユーザーアクションにより、約50の異なるテーブルにリアルタイムで新しいレコードが作成されるシナリオがあります。ユースケースの設計では、ユーザーの操作の結果として作成された新しいレコードが、ユーザーが変更を加えるためにすぐに必要になるようになっています。したがって、オフラインまたは作成の遅延の可能性はありません。
そうは言っても、明らかな問題は、挿入ステートメント(およびいくつかの追加の操作ステートメント)がトランザクション内にあるため、非常に長いトランザクションになることです。これは約30秒間実行され、多くの場合、タイムアウトになるか、他のクエリがブロックされます。
アトミック性にはトランザクションが必要です。トランザクションを分割し、一貫性を維持するためのより良い方法はありますか?または、現在の状況を改善する他の方法はありますか?
c# - キャッチ トランザクション接続後の SqlTransaction が null
異なるパラメーター値でストアド プロシージャを呼び出すループがあります。次の呼び出しcmd.ExecuteNonQuery();
では、トランザクションを使用してすべてまたはロールバックを保存し、checkBox2 - 常に保存します。問題が 1 つ見つかりましたが、解決策が見つかりません。catch ブロックが起動されたときの最初の問題の後、トランザクション オブジェクトは接続を失います。
t.connection
無効です!すべてが良いですが、トランザクション オブジェクトは開始時に接続されていません。