Seltsam SQL2005 Problem. „SqlConnection unterstützt keine parallele Transaktionen“

StackOverflow https://stackoverflow.com/questions/407320

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe ein Problem, das wie sein Ergebnis einer Deadlock-Situation scheint. Whe suchen jetzt die Wurzel des Problems, sondern inzwischen wollten wir den Server und erhalten die Kunden gehen.

neu starten

Und jetzt jedes Mal starten wir das Programm heißt es nur „SqlConnection nicht parallel Transaktionen unterstützt“. Wir haben nichts im Programm geändert, sein kompilierte und auf dem Kunden-Server, aber nach dem „möglichen Deadlock“ -Situation es gehen will wieder an.

Wir haben 7-Clients (Computer) läuft das Programm, wird jeder Client auf einem lokalen Server zu einem Webservice zu sprechen, und die Webservice an den SQL-Server (gleiche Maschine wie Webserver) sprechen.

Wir neu gestartet haben sowohl den SQL-Server und den IIS-Server, aber nicht auf den Server wegen anderen wichtigen Dienste neu gestartet auf dem Server ausgeführt werden, so dass ihr das letzten, was wir tun. Wir können se keine Sperren oder irgendetwas in der Registerkarte Verwaltung.

Meine Frage ist also, warum der Fehler von einem Zeitpunkt zum anderen comming „SqlConnection nicht parallel Transaktionen unterstützt“, ohne etwas im Programm zu ändern und es lebt immer noch zwischen SQL-Neustart.

Es scheint, wie es auf der ersten db-Anfrage geschieht das Programm nicht, wenn es gestartet werden.

Wenn Sie weitere Informationen brauchen nur fragen. Im verwirrt ...

Weitere Informationen: Ich glaube nicht, daß ich „lange“ laufende Transaktionen haben. Das Szenario ist oft, dass ich habe einen Datensatz mit 20-100 Zeilen (ContractRows) in diesen Kranken tun einen .Update auf dem Tableadapter. Ich auch Schleife throug jene 20-100 Zeilen und für einige von ihnen Ill Ad-Haken-SQL-querys erstellen (zum Beispiel, wenn ein gemietetes Produkt markiert als kehrte ich erstelle eine SQL-Abfrage, um ein Produkt zu markieren, wie in der Datenbank zurückgegeben)

So mache ich das sehr vereinfacht:

Create objTransactionObject
Create objtableadapter (objTransactionObject)
for each row in contractDS.contractrows
  if row.isreturned then
    strSQL &= "update product set instock=1 where prodid=" & row.productid & vbcrlf
 End if
next
objtableadapter.update(contractDS)
objData.ExecuteQuery(strSQL, objTransactionObject)    
if succsesfull 
  objtransactionobject.commit
else
  objtransactionobject.rollback
end if
objTran.Dispose()

Und dann tun Im Commit oder Rollback je nachdem, ob es gut gegangen ist oder nicht.

Edit:. Keine der Antworten das Problem gelöst haben, aber ich werde Ihnen für die gute Mühe danken schießen Zeiger

Die „SqlConnection nicht parallele Transaktionen unterstützen“ plötzlich verschwunden und jetzt der SQL-Server nur „untergeht“ 4-5 mal am Tag, ich denke, es ist ein Deadlock, die das tut, aber ich habe nicht das richtige Wissen, um herauszufinden, und sind kurz auf sQL-Experten, die dies für mich zur Zeit überwachen können. Ich neu starten, nur den SQL-Server und alles funktioniert wieder. 1 von 10 mal muss ich auch den Computer neu starten. Es ist wirklich nervt mich (und meine Kunden natürlich).

Wer eine Person mit gut Wissen bei der Analyse von Problemen mit Deadlocks oder anderen SQL-Problemen in Schweden (oder überall in der Welt, Englisch sprechend) zu wissen, sind frei, mich zu kontaktieren. Ich weiß, das eine Kontaktstelle is'nt aber ich nehme meine chanse die Frage zu stellen, weil ich von Möglichkeiten erschöpft, ich habe 3 Tage verbracht und Nächte um die Kunden zu optimieren sicher sein, wir schließen Verbindungen und nicht tun zu viel dumme Sachen dort . Ohne Glück.

War es hilfreich?

Lösung

Es scheint zu sein, dass Sie Verbindungen und die Schaffung von neuen Transaktionen auf derselben offenen Verbindung gemeinsam nutzen (dies ist der parallele Teil der Ausnahme Sie sehen).

Ihr Beispiel scheint dies zu unterstützen, wie Sie nicht erwähnt haben, wie Sie die Verbindung darin zu erwerben.

Sie sollten eine Überprüfung des Codes tun und sicherstellen, dass Sie nur eine Verbindung öffnen und dann die Entsorgung, wenn Sie (und mit allen Mitteln, verwenden Sie die Anweisung using um sicherzustellen, dass Sie die Verbindung schließen) fertig sind, wie es scheint, wie Sie eine offene irgendwo verlassen.

Andere Tipps

Ihr nicht erscheint ein ungewöhnliches Problem. Google fand eine Menge Hits, wenn ich Ihre Fehler Zeichenfolge in das Suchfeld eingefügt.

Vergangenheit Antworten Lesen, es klingt wie es etwas mit Verschachtelung Transaktionen zu tun hat, nicht ordnungsgemäß oder Isolationsstufe.

Wie lange Verbindungen offen gehalten? Haben Sie lange laufende Transaktionen?

Haben Sie implizite Transaktionen auf irgendwo eingeschaltet, so dass gibt es einige Geschäfte, wo man sie nicht erwartet hätte? Haben Sie Activity Monitor zu sehen, geöffnet, wenn es irgendwelche unerwarteten Transaktionen sind?

Haben Sie versucht, eine Sicherungskopie Ihres Transaktionsprotokoll zu tun? Das könnte es auch klar, wenn ich eine frühere, ähnliche Erfahrung richtig erinnere.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top