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:
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
Dann habe ich mittels dcomcnfg -> Computer -> Arbeitsplatz -> Eigenschaften -> Sicherheit eingehende und ausgehende Verbindungen erlaubt. Daraufhin bekam ich die neue Fehlermeldung
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?
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(); }
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.
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)