Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo presenta esempi di una traccia di rete che acquisisce la sequenza nel momento in cui viene chiusa una connessione TCP (Transmission Control Protocol) tra un'applicazione client e il Motore di Database di SQL Server (il server). Comprendere questi modelli è fondamentale per diagnosticare il comportamento della rete, identificare le strategie di pool e ottimizzare la gestione delle connessioni nelle applicazioni Web o di servizio.
Chiusura dei tipi di connessione
Questo articolo fornisce esempi per le normali connessioni TCP e le connessioni MARS (Multiple Active Result Sets). MARS è una funzionalità di SQL Server, introdotta con SQL Server 2005 (9.x), che consente l'esecuzione di più comandi in una connessione senza dover pulire i risultati dal primo comando, prima di eseguire il secondo comando. MARS viene ottenuto tramite multiplexing di sessione (SMUX).
In questa sezione vengono descritti diversi esempi di chiusura di una connessione di rete.
- L'indirizzo IP del client è
10.10.10.104
- L'indirizzo IP del server è
10.10.10.22
Chiusura di pacchetti
Questo esempio mostra una normale sequenza di chiusura della connessione. Prendere nota dei numeri di fotogrammi bassi e degli offset di tempo. Questa sequenza è probabilmente una chiusura di una connessione in un pool. Questo dovrebbe avvenire entro 30 secondi dall'inizio della traccia, altrimenti potrebbero essere visualizzati anche pacchetti keep-alive.
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
Istruzioni Transact-SQL e pacchetti di chiusura
In questo esempio viene illustrata la chiusura di una connessione non con pool, dopo due istruzioni Transact-SQL. Se questa connessione non è stata inserita in pool, è anche possibile visualizzare pacchetti keep-alive associati all'invio della connessione al pool di connessioni, anziché i pacchetti di chiusura immediatamente dopo l'ultima risposta dal server. È consigliabile raggruppare le connessioni in qualsiasi tipo di applicazione Web o di servizio per consentire il riutilizzo della connessione. Il pool di connessioni riduce il numero di connessioni al server e riduce al minimo i costi e il ritardo associati alle nuove connessioni.
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
Connessione inattiva o poolizzata in fase di chiusura
La connessione viene chiusa 10 secondi dopo lo scambio keep-alive precedente (vedere la colonna Delta
).
Nota
Il parser identifica erroneamente il pacchetto iniziale ACK+FIN
(Frame 1881) come un pacchetto keep-alive ACK
a causa del pacchetto keep-alive precedente. Tuttavia, sta inizializzando la chiusura della connessione.
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