Announcement

Collapse
No announcement yet.

Transaktion kommt mit zwei Datenbankverbindungen nicht klar

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Transaktion kommt mit zwei Datenbankverbindungen nicht klar

    Hallo,

    da ich keine Ahnung habe, wo ich genau mein Problem hinposten kann, versuche ich es einfach mal hier. Ich habe einen Code-Abschnitt, von dem ich möchte, dass er als ganzes oder garnicht ausgeführt wird. Daher habe ich ihn in einer Transaktion gekapselt. Innerhalb erfolgt der Aufruf einer Prozedur, eine weitere Select-Abfrage und das versenden einer Mail. Wobei letzteres in einer Funktion wieder gekapselt ist. Grob vereinfacht:

    Code:
      public void myFunction()
      {
        int ID = (int)dgvOver.SelectedValue;
        try
        {
          using (TransactionScope tx = new TransactionScope())
          {
            SqlConnection sqlCon = DB.createConnection();
            sqlCon.Open();
    
            // Daten in die DB schreiben
            SqlCommand sqlCmd = new SqlCommand();
            sqlCmd.Connection = sqlCon;
            sqlCmd.CommandText = "[dbo].[myProc]";
            sqlCmd.CommandType = CommandType.StoredProcedure;
            sqlCmd.Parameters.AddRange(new SqlParameter[] {
              ...
            });
    
            SendMail(ID);
    
            tx.Complete();
          }
        }
      }
    
     public static void SendMail(int ID)
      {
        // Daten aus DB holen
        SqlConnection sqlCon = DB.createConnection();
        sqlCon.Open();
        DataTable DT = new DataTable();
        SqlCommand sqlCmd = new SqlCommand("procGetDetails", sqlCon);
        sqlCmd.CommandType = CommandType.StoredProcedure;
        sqlCmd.Parameters.Add(new SqlParameter("PartnerID", PartnerID));
        SqlDataAdapter sqlDA = new SqlDataAdapter(sqlCmd);
        sqlDA.Fill(DT);
    
        // noch die E-Mail versenden
        SendMail Mail = new SendMail();
        Mail.send();
      }
    Auf meinem lokalen Entwicklungsrechner (Windows XP) lief alles gut, als ich das ganze (eine ASP.NET Website) auf den Server (Windows 2008 R2) übertragen habe, gab es zunächst das Problem mit der Fehlermeldung
    Code:
    Der Netzwerkzugriff für den Manager für verteilte Transaktionen (MSDTC) wurde deaktiviert. Aktivieren Sie DTC für den Netzwerkzugriff in der Sicherheitskonfiguration für MSDTC, indem Sie das Verwaltungstool Komponentendienste verwenden.
    Dann habe ich mittels dcomcnfg -> Computer -> Arbeitsplatz -> Eigenschaften -> Sicherheit eingehende und ausgehende Verbindungen erlaubt. Daraufhin bekam ich die neue Fehlermeldung
    Code:
    Die Verbindung mit dem Remoteserver kann nicht hergestellt werden.
    System.Net.Sockets.Socket GetConnection(System.Net.PooledStream, System.Object, Boolean, System.Net.IPAddress ByRef, System.Net.Sockets.Socket ByRef, System.Net.Sockets.Socket ByRef, Int32)
    Nach sukzessiver Suche stellte sich heraus, dass das Problem die zweite Datenbankverbindung ist. Jemand von euch eine Ahnung, wie das kommt bzw. wie ich dafür sorgen kann dass mehrere parallele Datenbankverbindungen möglich sind, auch wenn ich in diesem speziellen Fall auch mit einer auskomme?
Working...
X