問題タブ [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# - MS SQL - C# でアトミックに複数のテーブルを読み取る
で書かれたプログラムがあり、そこには の2 セットを参照C#
する があると想像してください。object (A)
objects ( set of B, set of C)
これらのオブジェクトは、、、の行として格納されMS SQL
ます。TableA
TableB
TableC
どこ
(したがって、単一のオブジェクト A = では 1 行、およびTableA
では複数の行にリンクできます)TableB
TableC
私が尋ねようとしている質問は、( の特定の ID の)C#
現在B objects
およびC objects
リンクされているものを選択するために使用したい場合、select ステートメントが次の値を取得するような方法でそれを行うにはどうすればよいかということです正確?object A
TableA
SqlTransaction
(select from A)
3 つの異なる select ステートメント、 then (select from B)
、 thenを使用して実行しようとしました(select from C)
が、これら 3 つの select ステートメント内で、2 つのテーブルのいずれかが情報を変更した可能性があり、結果セットが正確ではない可能性があります。
TLDR:c# SqlTransaction
アトミックかつ正確な方法で 1:M および M:M の関係で複数のテーブル データをプルする選択を保証するために使用する方法 (テーブル B および C の他の同時更新 / 削除ステートメントが結果の整合性に影響を与えないようにする)設定)
c# - SQL トランザクション ラッパーの破棄
C# コードでトランザクション処理をカプセル化しようとしています。これを実現するために、TransactionProvider というクラスを作成しました。
使用法:
ここでの考え方は、'using' ステートメントでこのクラスをインスタンス化し、できるだけ早く SQL への接続を解放する (+トランザクションを終了する) ことです。いくつか読んだ後、ここで IDisposable を処理する方法がまだわかりません。TransactionProvider は管理されていないリソースに直接アクセスしないため、デストラクタを実装する理由はないと判断しました。残っている唯一のことは、SQLTransaction と SQLConnection の両方がファイナライズされていることを確認することだと思います。上記のコードは仕事をしますか?TransactionProvider オブジェクトが範囲外になるとすぐに、すべての接続が閉じられるようにしますか?
c# - C# で SqlTransaction を使用する方法
次のコードを使用して、一度に 2 つのコマンドを実行しています。SqlTransaction を使用して、すべてのコマンドが実行されるかロールバックされることを保証しました。「トランザクション」なしでプログラムを実行すると、正しく実行されます。しかし、それらで「トランザクション」を使用すると、エラーが表示されます。
私のコード:
エラー:
c# - 同じテーブルの SqlTransaction でタイムアウト エラーが発生する
「タイムアウトの期限が切れました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません」というエラーが表示されます。
CheckSerialNumber 関数は、YSL00 (executecalar と同じテーブル。上記のコードを参照) への挿入も行います。前述したように、YSL000 テーブルを読み取って更新するフラット ファイルには数千の行があります。
これを処理するために、2 つの別個の sqlcommands と 2 つの別個の接続があることに注意してください。理由は、sqltransaction では、同じテーブルに対してクエリを実行できないためです。これが原因でタイムアウトが発生していると思いますか?
読んでくれてありがとう。提案してください
更新 1: コード全体を貼り付けていないので、プログラムで以下のコードを使用して破棄が行われることに言及したいと思います。
c# - c# プログラム: 多くの INSERT ステートメントを含む SQLTransaction コマンドでエラーが発生する
更新 1: 以下のコードは私の DEV マシンでは正常に動作しますが、TEST/Production サーバーでは失敗します。
}
上記のコードで直面している問題:
コミットとロールバックで SQLTransaction を使用しています。フラット ファイルをループして、いくつかのテーブルを更新します。ファイルには通常、約 500 ~ 1000 行が含まれます。すべての行に対して (sqltransaction を使用して) INSERT ステートメントを作成していますが、COMMIT ステートメントでプログラムが長時間停止し、最終的に以下に示すようなエラーが発生します。ただし、sqltransaction 全体 (およびコミットとロールバック) をコメントアウトした場合、すべて問題ありませんが、コミットとロールバックが必要です。以下のようなエラーが発生しないように、トランザクションを 1 つだけ作成する方法はありますか (現在、INSERT ステートメントごとに作成しています)。
パイプからの読み取り中にエラーが発生しました: パイプは終了しました。(109、0x6d)。mscorlib
サーバー スタック トレース: System.ServiceModel.Channels.StreamConnection.Read(Byte[] バッファー、Int32 オフセット、Int32 サイズ、TimeSpan タイムアウト) で System.ServiceModel.Channels.SessionConnectionReader.Receive(TimeSpan タイムアウト) で System.ServiceModel.Channels. System.ServiceModel.Channels.FramingDuplexSessionChannel.Receive (TimeSpan タイムアウト) での SynchronizedMessageSource.Receive (TimeSpan タイムアウト) System.ServiceModel.Channels.FramingDuplexSessionChannel.TryReceive (TimeSpan タイムアウト、Message& メッセージ) で System.ServiceModel.Dispatcher.DuplexChannelBinder.Request(Message)メッセージ、TimeSpan タイムアウト) System.ServiceModel.Channels.ServiceChannel.Call(String アクション、Boolean oneway、ProxyOperationRuntime 操作、Object[] ins、Object[] outs、TimeSpan timeout) at System.ServiceModel.Channels.ServiceChannel.Call(String)アクション、System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage メソッド呼び出し、ProxyOperationRuntime 操作) で System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage メッセージ) で Boolean oneway、ProxyOperationRuntime 操作、Object[] ins、Object[] outs)
[0] で再スローされた例外: System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg) で System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 タイプ)
c# - この TRANSACTION は ROLLBACK(ed) されていますか?
既存のテーブルを作成しようとしてエラーが発生した場合、既存のトランザクションは既にロールバックされているように見えます。
何が起こっているのか、その理由を理解したいと思います。トランザクションのロールバックは私の責任であると思います-他のエラーではそうしませんROLLBACK
.
sql-server - 同時アクセス時の T-SQL ロック リソース
同時アクセス時に特定のテーブルをロックしたい。
ストアド プロシージャ内:
- テーブルを切り捨てる
- 計算を行い、上の表に入力します
- PROCEDUREから戻った後、テーブルから選択を行います
同時アクセスが発生した場合の問題を回避するために、「BEGIN TRANSACTION」に続いて「BEGIN TRY -END TRY」と「BEGIN CATCH - END CATCH」を追加する予定です。「END-TRY」の直前に「COMMIT」し、「CATCH」内で「ROLLBACK」します。
これだけですべての並行性の問題が解決するのでしょうか、それとももっと何かをする必要があります。
どうもありがとう、スジット
c# - SQL トランザクションを使用した 2 つのテーブルの挿入
フロントエンドでSQLトランザクションを使用して2つのテーブル挿入コードを実装する方法は?
私は2つのテーブルを持っていTblMaster
ますTblSub
. Tblsub
挿入が失敗した場合、レコードTblMaster
はロールバックされます。
ExecuteNonQuery
レコードを挿入するための SQL ヘルパー クラスに共通の関数があります。
この問題を解決する方法を教えてください。
sql - Railsコントローラーアクションで予期しないSQL操作順序
毎月のニュースレターの期限が切れているユーザーの電子メールの動的リストを返すアクションがあります。アクションはオプションのmark_as_sent
パラメーターを取り、存在する場合、ユーザー レコードを更新して、今日メールが送信されたことを示します。
ただし、ユーザーが選択された後mark_as_sent
に更新操作が行われたとしても、が true の場合、アクションは常に空のリストを返します。
2 つの操作は同じトランザクションの一部ではないため、最初の操作が 2 番目の操作の前に有効になっているように見える理由がわかりません。