C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

入れ子にしたトランザクションの同時Commit

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■86900 / inTopicNo.1)  入れ子にしたトランザクションの同時Commit
  
□投稿者/ まる (1回)-(2018/04/02(Mon) 15:31:35)

分類:[ASP.NET (VB)] 

いつも参考にしています

異なるServerに配置されているSqlServer(AとB)とします
これらのCommitを同時に行いたいのですがTransactionを一つにまとめるたり関連付けたりとか
そういった方法はないでしょうか?

        Using ConnectionA As New SqlClient.SqlConnection(ConnectionStringServerA)
            Using ConnectionB As New SqlClient.SqlConnection(ConnectionStringServerB)

                ConnectionA.Open()
                ConnectionB.Open()

                Using TransactionA As SqlClient.SqlTransaction = ConnectionA.BeginTransaction()
                    Using TransactionB As SqlClient.SqlTransaction = ConnectionB.BeginTransaction()

                        Using CommandA As New SqlClient.SqlCommand(CommandTextA, ConnectionA)
                            Using CommandB As New SqlClient.SqlCommand(CommandTextB, ConnectionB)

                                CommandA.Transaction = TransactionA
                                CommandB.Transaction = TransactionB

                                Dim RetA As Integer = CommandA.ExecuteNonQuery
                                Dim RetB As Integer = CommandB.ExecuteNonQuery

                            End Using
                        End Using
                        TransactionA.Commit()
                        TransactionB.Commit() 'ここでエラーが発生するとAだけ更新される
                    End Using
                End Using
            End Using
        End Using

引用返信 編集キー/
■86902 / inTopicNo.2)  Re[1]: 入れ子にしたトランザクションの同時Commit
□投稿者/ kaina (40回)-(2018/04/02(Mon) 16:06:28)
リンクサーバを作成し、グローバルトランザクションで
実行するとお望みのことが実現できるかと思います。
以下のページを参考にしてみて下さい。

https://techinfoofmicrosofttech.osscons.jp/index.php?SQL%20Server%20%E3%83%AA%E3%83%B3%E3%82%AF%E3%82%B5%E3%83%BC%E3%83%90%E6%A9%9F%E8%83%BD


引用返信 編集キー/
■86904 / inTopicNo.3)  Re[2]: 入れ子にしたトランザクションの同時Commit
□投稿者/ まる (2回)-(2018/04/02(Mon) 16:36:15)
No86902 (kaina さん) に返信

ありがとうございました
解決済み
引用返信 編集キー/
■86911 / inTopicNo.4)  Re[3]: 入れ子にしたトランザクションの同時Commit
□投稿者/ なちゃ (240回)-(2018/04/03(Tue) 11:39:29)
No86904 (まる さん) に返信
> ■No86902 (kaina さん) に返信
>
> ありがとうございました

ちなみに扱いはあくまで別DBでよいなら、msdtcは使うようにして、TransactionScopeでトランザクションを管理することを強くおすすめします。

DBがひとつでも、トランザクションの監理はTransactionScopeの方がおすすめです。
まあ、今くらいの処理のフローならどっちでもそんなに変わりませんが。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


トピック内ページ移動 / << 0 >>

このトピックに書きこむ