SqlConnection vs Sql Sitzung. Stimmen ihre Lebenszeiten überein?

9

Ich möchte einige Einstellungen für die SQL-Sitzungsebene für bestimmte Prozesse in meiner c# -App anwenden.

Ich möchte zum Beispiel DEADLOCK_PRIORITY für einige Hintergrundprozesse auf LOW setzen.

Die Fragen sind:

  1. Wenn ich eine neue SQL-Verbindung öffne, startet das eine neue SQL-Sitzung?

  2. Bleibt die SQL-Sitzung bestehen, bis die Verbindung geschlossen wird? Wenn ich meine Einstellungen direkt nach dem Öffnen von SqlConnection anwende, sind sie dann für alle Abfragen gültig, die im Zusammenhang mit demselben SqlConnection ?

  3. ausgeführt werden
  4. Was ist mit Verbindungspooling ? Ist das möglich, dass meine Einstellung SET DEADLOCK_PRIORITY LOW von anderen Prozessen in meinem System wiederverwendet wird (was ich nicht möchte), weil SqlConnection nicht wirklich geschlossen ist ( asp.net connection pooling entscheidet) um es wiederzuverwenden).

Danke!

    
Artur Udod 17.05.2013, 15:49
quelle

1 Antwort

2

ADO.NET führt sp_reset_connection aus, wenn Sie eine SqlConnection aus dem Pool entnehmen (nachdem Sie sie geschlossen haben, sodass sie in den Pool zurückgegeben wird). Laut Was bedeutet "exec sp_reset_connection" in Sql Server Profiler? alle SET Optionen werden zurückgesetzt. Das würde DEADLOCK_PRIORITY einschließen.

Ich würde vorschlagen, dass Sie ein kleines Testprogramm schreiben, um dies zu bestätigen. Das ADO.NET-Sitzungs-Pooling ist nicht perfekt, es setzt beispielsweise die ISOLATION LEVEL nicht zurück und führt beim Schließen keine Rollback-Transaktionen durch.

    
usr 18.05.2013, 16:18
quelle