1

このようなことをしているコードがいくつかあります (実際のコードはもっと複雑であることに注意してください)。説明を助けるためにこれを作成しました:

Imports System.Data.SqlClient
Imports System.Transactions

Public Class Form1
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        Using scope As New TransactionScope
            Try
                Dim objCon As SqlConnection = New SqlConnection("Connection string 1")
                Dim objCon2 As SqlConnection = New SqlConnection("Connection string 2")
                objCon2.Open()
                Using objCon2
                    Dim t1 As New Test
                    t1.Test()
                    objCon.Open()
                End Using
            Catch ex As Exception
              'I do not swallow exceptions
            End Try
        End Using
    End Sub
End Class

Public Class Test
    Public Sub Test()
        Dim objCon1 As SqlConnection = New SqlConnection("Connection string 1")
        objCon1.Open()
    End Sub
End Class

上記のコードは、トランザクション内で 2 つのデータベースに接続していることを示しています (そのうちの 1 つは 2 回接続されています)。例外は次のとおりです: FormLoad エラー: System.Transactions.TransactionException: パートナー トランザクション マネージャーは、リモート/ネットワーク トランザクションのサポートを無効にしました。(HRESULT からの例外: 0x8004D025)。

4

1 に答える 1

0

このSO投稿を参照してください。男は彼の質問に対する答えを見つけます。

複数のデータベース接続を持つトランザクションスコープ

TransactionScope を使用している場合は、間違いなく良い読み物です。

于 2013-10-14T18:52:50.487 に答える