Apa perbedaan antara koneksi dan sesi?

51

Apa perbedaan antara koneksi dan sesi dan bagaimana mereka terkait?

jrara
sumber

Jawaban:

54

Koneksi adalah saluran komunikasi fisik antara SQL Server dan aplikasi: soket TCP, pipa bernama, wilayah memori bersama. Sesi di SQL Server sesuai dengan definisi Wikipedia sesi : wadah semi permanen untuk pertukaran informasi. Dengan kata lain, sesi menyimpan pengaturan seperti cache informasi login Anda, level isolasi transaksi saat ini, nilai level sesiSET , dll.

Biasanya ada satu sesi pada setiap koneksi, tetapi mungkin ada beberapa sesi pada koneksi tunggal ( Multiple Active Result Set , MARS) dan ada sesi yang tidak memiliki koneksi ( prosedur yang diaktifkan SSB , sesi sistem ). Ada juga koneksi tanpa sesi, yaitu koneksi yang digunakan untuk tujuan non-TDS, seperti mirroring basis data sys.dm_db_mirroring_connectionsatau koneksi Service Broker sys.dm_broker_connections.

Remus Rusanu
sumber
(noise bertiup) Ketika Anda menyadari bahwa SSMS menggunakan MARS dan karenanya sesi berbeda pada setiap tab file terbuka dan itulah sebabnya #temptabel tidak dapat dihapus atau dipilih dari dalam tab file terbuka yang berbeda karena mereka scoped sesi.
GibralterTop
4
  • Koneksi merupakan koneksi ke server melalui jaringan atau lokal melalui memori bersama.

  • Sesi mewakili proses pengguna dalam SQL Server.

  • Koneksi dapat dikaitkan dengan nol atau lebih dari satu sesi.

Mihir
sumber
3

Anda dapat meminta tampilan manajemen dinamis sys.dm_exec_sessions untuk mempelajari informasi tentang login yang berhasil dan tidak berhasil ketika kepatuhan kriteria umum diaktifkan pada contoh SQL Server 2012.

Tampilan sys.dm_exec_connections dinamis manajemen memberikan informasi tentang koneksi yang dibuat untuk mesin database contohnya. Anda tidak dapat meminta tampilan manajemen dinamis ini untuk informasi tentang login yang berhasil dan tidak berhasil ketika kepatuhan kriteria umum diaktifkan pada contoh SQL Server 2012.

Phil Mccormack
sumber