問題タブ [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.

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

c# - sqltransaction を扱うこれら 2 つの方法は本質的に同じですか?

を実行するメソッドを作成しようとしていますTransaction
私はコードの 2 つのバージョンを思いつきました。
私のテストの 1 つで、例外に直面した後SqlServer2012、トランザクション中にいくつかの行がテーブルに挿入されていることに気付きました。
だから私はそれがトランザクション自体に問題があるに違いないと考え、その問題に対処するためにそれを変更しました.
このメソッドを4回の挿入、1回の削除、1回の更新、および別の挿入コマンドで実行することで得られる例外は次のとおりです。

トランザクション (プロセス ID 59) は、別のプロセスとのロック リソースでデッドロックされ、デッドロックの犠牲者として選択されました。トランザクションを再実行してください。

テーブルを見ると、3 つの新しい挿入行が表示されます (更新に到達してから例外が発生します) !!

更新 両方のメソッドが同じ例外をスローするようになりました。2番目の方法では、新しいパラメーターを追加して古い値をクリアするのにも苦労しました。

最初のバージョンは次のとおりです。

これは 2 番目のバージョンです。

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

c# - トランザクションを含む単一の SqlConnection、複数のコマンドの状況

単一の接続のみを使用し、トランザクションを使用するコマンドとトランザクションを使用しないコマンドの 2 つのコマンドを一緒に実行しようとしています。

このソリューションは別の場所に展開されているため、トレース/ログ機能はありません。そのため、プロセスが部分的に失敗した場合、少なくともログを追跡できます。

ここにテスト コードを追加します。

エラーが発生します:

ExecuteNonQuery では、コマンドに割り当てられた接続が保留中のローカル トランザクションにある場合、コマンドにトランザクションが必要です。コマンドのトランザクション プロパティが初期化されていません。

別のトランザクションレス接続なしで、私がやろうとしていることを達成する方法はありますか?

または、別の方法で単一の接続を使用してコードを最適化するためのより良い提案があれば、それについて学ぶことにオープンです.

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

vb.net - トランザクション ロールバック エラー (この SqlTransaction は完了しました。使用できなくなりました)

最初のトランザクションをテストしようとしていますが、それが成功した場合は 2 番目のトランザクションを試し、2 番目のトランザクションも成功した場合は両方をコミットし、2 番目のトランザクションが失敗した場合は最初のトランザクションをロールバックする必要があります。

したがって、状態の1つである辞書を返す次の関数があります。

0 (トランザクションは失敗したが、ロールバックできたことを意味する) -> sql トランザクション

1 (トランザクションが成功したことを意味します) -> sql トランザクション

-1 (トランザクションが失敗し、ロールバックできなかったことを意味します) -> sql トランザクション

次に、関数に次のコードがあります。

最初のトランザクションをまだコミットしていません。ロールバックしようとすると、sqlTransaction が完了したと表示されるのはなぜですか?

助けてくれてありがとう!

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

sql - SQLでフォーマット日付をd/M/yyyyに変換し、フォーマット時間をh:mm:ss AMに変換する方法

日時型のフィールドを作成しました。これをYYYY/M/D形式で表示したい

date 09/09/2014 は 2014/9/9 として表示されます

また、時間フィールド [Time_Orde] をこの形式で表示する必要があります 2:43:14 PM

SQL Server 2008 を使用しています

機能を試してみました

私のコード:

しかし、この形式を取得できませんでした 2014/9/9

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

c# - SqlConnectionでトランザクションがすでに開始されているかどうかを判断する方法は?

コードでa を使用しSqlTransactionています。以前の投稿では、ある接続でトランザクション ロックが発生している場合に問題が発生してIsolationLevel.ReadUncommitedいましたが、ロックなしで別の接続を作成するにはどうすればよいでしょうか。( SQL でのみ特定の接続のトランザクションを作成するにはどうすればよいですか? )。今、私は答えを得て、ドナルは私に使用することを提案しましたmyConnection.BeginTransaction(IsolationLevel.ReadUncommitted).Commit();

現在、上記の行で問題が発生することがあります。

セッションで他のスレッドが実行されているため、新しいトランザクションは許可されません。

ここで何が問題になるかわかりません。この問題は、別のスレッドが実行されている場合にのみ発生します。また、別のスレッドで同じ接続を使用しています。

上記のエラーは、クエリを実行しようとしたとき、または をDataTable使用して入力しようとしたときにも発生しますDataAdapter

ここで何が問題なのかわかりませんか?

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

sql-server - OUTPUT Insert.id を複数の値の挿入で別のテーブルに挿入する

簡単にするために、2 つのテーブルがあるとします。

user table (id, email)

user log table (id, date)

user テーブルに挿入される ID は何でも、同じ ID を user_log テーブルに挿入する必要があります。そうしないと、トランザクションが失敗するはずです。

これどうやってするの

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

c# - sqltransaction は、データの挿入中に二重レコードを挿入します

各データに複数のテーブルを挿入するためにそのsqltransactionを使用しています。

しかし、データベースに2つの同じデータがあるという問題があります。

その問題を解決するにはどうすればよいですか?

私を助けてください?ありがとう

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

c# - 複数のメソッドで SqlTransaction を使用する方法

A から forendkey を保持するオブジェクト B を削除できるオブジェクト A があるとします。

A を削除したい場合は、まず B から forendkey を削除してから A を削除する必要がありますが、何か問題が発生した場合はロールバックする必要がありますが、B からの forendkey の削除を独立して使用したいのですが、現時点では使用しません。これを達成する方法がわからない

私の現在の考え:

しかし、ご覧のとおり、これはかなり醜いです