Frage

    

Diese Frage bereits eine Antwort hier:

    
            
  •              Was bedeutet sp_reset_connection zu tun?                                      2 Antworten                          
  •     
    

Der Versuch, zu verstehen, was SQL Profiler bedeutet, durch Emittieren "sp_reset_connection".

Ich habe folgende: "exec sp_reset_connection" Linie gefolgt von Batchstarting und abgeschlossen,

RPC:Completed       exec sp_reset_connection
SQL:BatchStarting   SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]
SQL:BatchCompleted  SELECT [c].[TestID] AS [TestID], [c].[Description] AS [Description] FROM [dbo].[Test] AS [c]    

Im Grunde genommen hat erste Zeile „exec sp_reset_connection“ bedeutet den gesamten Prozess (meine Verbindung geöffnet wurde, das Auswahl stmt ausgeführt wird, dann wird die Verbindung geschlossen und zurück zum Pool freigegeben) nur stattfinden? Oder meine Verbindung ist immer noch in offener Bühne.

Und warum die sp_reset_connection vor meiner eigenen select-Anweisung ausgeführt wird, sollte es nicht der Reset kommen nach Benutzer-SQL?

Ich versuche, zu wissen, ist es eine Möglichkeit, genauer zu wissen, wenn eine Verbindung geöffnet und geschlossen wird?

Mit dem "exec sp_reset_connection" zu sehen, bedeutet das, meine Verbindung geschlossen wird?

War es hilfreich?

Lösung

Wie die anderen Antworten gesagt, zeigt sp_reset_connection dass Verbindungspool wiederverwendet wird. Achten Sie auf eine bestimmte Folge!

  

Jimmy Mays' MSDN Blog , sagte:

     

sp_reset_connection nicht zurückgesetzt die   Transaktionsisolationsstufe der   Server Standard aus dem vorherigen   Verbindung der Einstellung.

UPDATE : Beginnend mit SQL 2014 für Client-Treiber mit TDS-Version 7.3 oder höher, werden die Transaktionsisolationsstufen auf den Standard zurücksetzen zurück.

ref: SQL Server: Isolation Ebene Lecks über Pool-Verbindungen

Hier finden Sie einige zusätzliche Informationen:

  

Was sp_reset_connection tut tun?

     

Der Datenzugriff API Schichten wie ODBC,   OLE-DB und System.Data.SqlClient alle   nennen die (interne) gespeicherten Prozedur   sp_reset_connection, wenn ein Wiederverwenden   Verbindung von einem Verbindungspool. Es   bedeutet dies den Zustand des zurücksetzen   Verbindung, bevor es wiederverwendet wird,   aber nirgends dokumentiert, was   Dinge zurückgesetzt. Dieser Artikel versucht,   zu dokumentieren, die Teile des   Verbindung, die Reset erhalten.

     

sp_reset_connection setzt die   Folgende Aspekte einer Verbindung:

     
      
  • Alle Fehlerzustände und Zahlen   (Wie @@ error)

  •   
  • stoppt alle EC (Ausführungskontexte)   EG, das Kind Fäden eines Elternteil   eine parallele Abfrage

  • Ausführen   
  • Wartet auf alle ausstehenden I / O   Operationen, die aussteht

  •   
  • Befreit alle gehaltenen Puffer auf die   Server durch die Verbindung

  •   
  • Unlocks keine Pufferressourcen   die durch die Verbindung verwendet werden

  •   
  • Releases alle zugewiesenen Speicher   im Besitz der Verbindung

  •   
  • Löscht alle Arbeit oder temporäre   Tabellen, die durch die erstellt werden   Verbindung

  •   
  • Tötet alle globalen Cursor im Besitz des   Verbindung

  •   
  • Schließt alle geöffneten SQL-XML-Griffe, die offen sind

  •   
  • Löscht alle geöffneten SQL-XML-bezogene Arbeit Tabellen

  •   
  • Schließt alle Systemtabellen

  •   
  • Schließt alle Benutzertabellen

  •   
  • Drops alle temporäre Objekte

  •   
  • Bricht offene Transaktionen

  •   
  • Defekte von einer verteilten Transaktion, wenn eingetragen

  •   
  • Reduziert den Referenzzähler   für die Benutzer in der aktuellen Datenbank, die   Versionen gemeinsam genutzte Datenbanksperre

  •   
  • Frees erworben Schlösser

  •   
  • gibt alle erworbenen Griffe

  •   
  • Setzt alle SET-Optionen auf die Standardwerte

  •   
  • Setzt den @@ rowcount Wert

  •   
  • Setzt den @@ identity Wert

  •   
  • Setzt jede Sitzungsebene Spur   Optionen dbcc traceon ()

  • mit   
  • Resets CONTEXT_INFO in SQL Server 2005 und neuere NULL [nicht Teil des ursprünglichen Artikels]

  •   
     

sp_reset_connection wird nicht zurückgesetzt:

     
      
  • Sicherheitskontext, weshalb   Verbindungspooling Spiele Verbindungen   basierend auf der genauen Verbindungszeichenfolge

  •   
  • Anwendungsrollen eingetragen   mit sp_setapprole, da die Anwendung   Rollen können nicht

  • rückgängig gemacht werden   

. Hinweis: Ich schließe die Liste hier, wie ich es will nicht, dass in den immer transienten Web verloren gehen

Andere Tipps

Es ist ein Hinweis darauf, dass Verbindungspooling verwendet wird (was eine gute Sache ist).

Hinweis jedoch:

Wenn Sie Ausgabe Transaktionsisolationsstufe in einer Stored Procedure oder Trigger gesetzt, wenn das Objekt kehrt die Isolationsstufe steuern auf das Niveau in der Tat zurückgesetzt wird, wenn das Objekt aufgerufen wurde. wenn Sie WIEDERHOLBARE READ in einer Charge und der Ansatz dann ruft eine gespeicherte Prozedur zum Beispiel festgelegt, dass die Isolationsstufe auf SERIALIZABLE setzt, kehrt die Isolationsstufe Einstellung READ wiederholbar, wenn die gespeicherte Prozedur kehrt zum Batch-Steuerung.

http://msdn.microsoft.com/en-us/library/ms173763.aspx

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