De volgorde van het afsluiten van de netwerkverbinding op de Database Engine volgen
In dit artikel vindt u voorbeelden van een netwerktracering die de reeks vastlegt wanneer een TCP-verbinding (Transmission Control Protocol) tussen een clienttoepassing en de SQL Server Database Engine (de server) wordt gesloten. Inzicht in deze patronen is cruciaal voor het diagnosticeren van netwerkgedrag, het identificeren van poolstrategieën en het optimaliseren van verbindingsbeheer in web- of servicetoepassingen.
Verbindingstypen sluiten
Dit artikel bevat voorbeelden voor normale TCP-verbindingen en MARS-verbindingen (Multiple Active Result Sets). MARS is een functie van SQL Server, geïntroduceerd met SQL Server 2005 (9.x), waarmee meerdere opdrachten kunnen worden uitgevoerd op een verbinding zonder de resultaten van de eerste opdracht op te schonen, voordat de tweede opdracht wordt uitgevoerd. MARS wordt bereikt via sessiemultiplexing (SMUX).
In deze sectie worden verschillende voorbeelden beschreven van het sluiten van een netwerkverbinding.
- Het IP-adres van de client is
10.10.10.104
- Het IP-adres van de server is
10.10.10.22
Pakketten sluiten
In dit voorbeeld ziet u een normale volgorde voor het sluiten van de verbinding. Let op de lage framenummers en tijdverschuivingen. Deze reeks is waarschijnlijk een gegroepeerde verbindingssluiting. Dit moet gebeuren binnen 30 seconden na het begin van de trace, of u ziet mogelijk ook keep alive-pakketten.
Frame Offset Source IP Dest IP Description
----- --------- ------------ ------------ ---------------------------------------------------------------------------
50 4.1529661 10.10.10.104 10.10.10.22 TCP:Flags=...A...F, SrcPort=4657, DstPort=1433, PayloadLen=0, Seq=413460761
51 4.1529661 10.10.10.22 10.10.10.104 TCP:Flags=...A...., SrcPort=1433, DstPort=4657, PayloadLen=0, Seq=280398321
52 4.1529661 10.10.10.22 10.10.10.104 TCP:Flags=...A...F, SrcPort=1433, DstPort=4657, PayloadLen=0, Seq=280398321
54 4.2330441 10.10.10.104 10.10.10.22 TCP:Flags=...A...., SrcPort=4657, DstPort=1433, PayloadLen=0, Seq=413460761
Transact-SQL verklaringen en afsluitende pakketten
In dit voorbeeld ziet u hoe u een niet-gepoolde verbinding sluit, na twee Transact-SQL instructies. Als deze verbinding niet is gepoold, kunt u ook keep alive-pakketten zien die zijn gekoppeld aan het terugsturen van de verbinding naar de verbindingsgroep, in plaats van de afsluitende pakketten direct na het laatste antwoord van de server. We raden u aan verbindingen in een soort web- of servicetoepassing te groeperen om opnieuw gebruik van verbindingen mogelijk te maken. Het groeperen van verbindingen vermindert het aantal verbindingen met de server en minimaliseert de kosten en vertraging die worden gekoppeld aan nieuwe verbindingen.
Frame Offset Source IP Dest IP Description
----- --------- ------------ ------------ ---------------------------------------------------------------------------
364 9.1949581 10.10.10.104 10.10.10.22 TDS:SQLBatch, Version = 7.300000, SPID = 0, PacketID = 1, Flags=...AP..., S
365 9.1949581 10.10.10.22 10.10.10.104 TDS:Response, Version = 7.300000, SPID = 130, PacketID = 1, Flags=...AP...,
366 9.3043331 10.10.10.104 10.10.10.22 TDS:SQLBatch, Version = 7.300000, SPID = 0, PacketID = 1, Flags=...AP..., S
367 9.3072631 10.10.10.22 10.10.10.104 TDS:Response, Version = 7.300000, SPID = 130, PacketID = 1, Flags=...AP...,
375 9.4078491 10.10.10.104 10.10.10.22 TCP:Flags=...A...F, SrcPort=4647, DstPort=1433, PayloadLen=0, Seq=157672648
376 9.4078491 10.10.10.22 10.10.10.104 TCP:Flags=...A...., SrcPort=1433, DstPort=4647, PayloadLen=0, Seq=192890973
379 9.4078491 10.10.10.22 10.10.10.104 TCP:Flags=...A...F, SrcPort=1433, DstPort=4647, PayloadLen=0, Seq=192890973
397 9.5221071 10.10.10.104 10.10.10.22 TCP:Flags=...A...., SrcPort=4647, DstPort=1433, PayloadLen=0, Seq=157672649
Niet-actieve of gegroepeerde verbinding die wordt gesloten
De verbinding wordt 10 seconden na de vorige keep alive-uitwisseling gesloten (zie Delta
kolom).
Notitie
De parser markeert per ongeluk het eerste ACK+FIN
-pakket (Frame 1881) als een keep-alive ACK
-pakket, omdat het vorige keep-alive-pakket als zodanig is gemarkeerd. Het is echter bezig met het initialiseren van de afsluiting van de verbinding.
Frame Offset Delta Source IP Dest IP Description
----- ---------- ---------- ----------- ----------- -----------------------------------------------------------------
1314 16.3641802 0.0000000 10.10.10.45 10.10.10.51 TCP:[Keep alive]Flags=...A...., SrcPort=51708, DstPort=1433, Payl
1317 16.3677083 0.0035281 10.10.10.51 10.10.10.45 TCP:[Keep alive ack]Flags=...A...., SrcPort=1433, DstPort=51708,
1327 16.4269375 0.0592292 10.10.10.51 10.10.10.45 TCP:[Keep alive]Flags=...A...., SrcPort=1433, DstPort=51708, Payl
1328 16.4269637 0.0000262 10.10.10.45 10.10.10.51 TCP:[Keep alive ack]Flags=...A...., SrcPort=51708, DstPort=1433,
1881 26.7918499 10.3648862 10.10.10.45 10.10.10.51 TCP:[Keep alive ack]Flags=...A...F, SrcPort=51708, DstPort=1433,
1886 26.7929474 0.0010975 10.10.10.51 10.10.10.45 TCP:Flags=...A...., SrcPort=1433, DstPort=51708, PayloadLen=0, Se
1888 26.7929474 0.0000000 10.10.10.51 10.10.10.45 TCP:Flags=...A...F, SrcPort=1433, DstPort=51708, PayloadLen=0, Se
1890 26.7929947 0.0000473 10.10.10.45 10.10.10.51 TCP:Flags=...A...., SrcPort=51708, DstPort=1433, PayloadLen=0, Se