Udostępnij za pomocą


sys.dm_exec_connections (Transact-SQL)

Dotyczy do:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsEndpoint analityki SQL w Microsoft FabricMagazyn w Microsoft FabricBaza danych SQL w Microsoft Fabric

Zwraca informacje o połączeniach nawiązanych do tej instancji silnika bazodanowego oraz szczegóły każdego połączenia. Zwraca informacje o połączeniu serwerowym dla SQL Server i Azure SQL Managed Instance. Zwraca informacje o połączeniu dla bieżącej bazy danych w Azure SQL Database. Zwraca informacje o połączeniach dla wszystkich baz danych w tej samej puli elastycznej dla baz danych w pulach elastycznych w Azure SQL Database.

Uwaga / Notatka

Aby wywołać to z dedykowanej puli SQL w Azure Synapse Analytics lub Analytics Platform System (PDW), zobacz sys.dm_pdw_exec_connections (Transact-SQL). Dla serwerless SQL pool lub Microsoft Fabric użyj sys.dm_exec_connections.

Nazwa kolumny Typ danych Description
session_id int Identyfikuje sesję związaną z tym połączeniem. Jest dopuszczana wartość null.
most_recent_session_id int Reprezentuje identyfikator sesji dla najnowszego żądania powiązanego z tym połączeniem. (Połączenia SOAP mogą być ponownie użyte przez inną sesję.) Jest unieważnialny.
connect_time datetime Znacznik czasu nawiązania połączenia. Nie jest nullowalny.
net_transport nvarchar(40) Gdy używany jest MARS, zwraca Session dla każdego dodatkowego połączenia powiązanego z sesją logiczną MARS.

Nuta: Opisuje fizyczny protokół transportowy używany przez to połączenie. Nie jest nullowalny.
protocol_type nvarchar(40) Określa typ protokołu ładunku. Obecnie rozróżnia TDS ("TSQL"), "SOAP" oraz "mirroring baz danych". Jest dopuszczana wartość null.
protocol_version int Wersja protokołu dostępu do danych powiązana z tym połączeniem. Jest dopuszczana wartość null.
endpoint_id int Identyfikator opisujący, jaki to typ połączenia. Można to endpoint_id wykorzystać do zapytania do widoku sys.endpoints . Jest dopuszczana wartość null.
encrypt_option nvarchar(40) Wartość boole'a opisująca, czy szyfrowanie jest włączone dla tego połączenia. Nie jest nullowalny.

Dla punktów końcowych lustrzanego HADR ta kolumna zawsze zwraca FALSE. Zamiast tego użyj DMV, sys.database_mirroring_endpoints aby sprawdzić, czy połączenia z punktem końcowym lustrzanego HADR są szyfrowane.
auth_scheme nvarchar(40) Określa schemat uwierzytelniania SQL Server/Windows używany w tym połączeniu. Nie jest nullowalny.
node_affinity smallint Identyfikuje węzeł pamięci, do którego to połączenie ma powinowactwa. Nie jest nullowalny.
num_reads int Liczba odczytów bajtów, które miały miejsce przez to połączenie. Jest dopuszczana wartość null.
num_writes int Liczba zapisów bajtów, które miały miejsce przez to połączenie. Jest dopuszczana wartość null.
last_read datetime Znacznik czasu ostatniego odczytu na tym połączeniu. Jest dopuszczana wartość null.
last_write datetime Znacznik czasu ostatniego zapisu na tym połączeniu. Jest dopuszczana wartość null.
net_packet_size int Rozmiar pakietu sieciowego używany do transferu informacji i danych. Jest dopuszczana wartość null.
client_net_address varchar(48) Adres hosta klienta łączącego się z tym serwerem. Jest dopuszczana wartość null.
client_tcp_port int Numer portu na komputerze klienckim powiązanym z tym połączeniem. Jest dopuszczana wartość null.

W Azure SQL Database ta kolumna zawsze zwraca NULL.
local_net_address varchar(48) Reprezentuje adres IP na serwerze, do którego to połączenie było celowane. Dostępne tylko dla połączeń korzystających z dostawcy transportu TCP. Jest dopuszczana wartość null.

W Azure SQL Database ta kolumna zawsze zwraca NULL.
local_tcp_port int Reprezentuje port TCP serwera, do którego to połączenie było celowane, jeśli było połączeniem wykorzystującym transport TCP. Jest dopuszczana wartość null.

W Azure SQL Database ta kolumna zawsze zwraca NULL.
connection_id uniqueidentifier Identyfikuje każde połączenie unikatowo. Nie jest nullowalny.
parent_connection_id uniqueidentifier Identyfikuje główne połączenie, z którego korzysta sesja MARS. Jest dopuszczana wartość null.
most_recent_sql_handle varbinary(64) Uchwyt SQL ostatniego żądania wykonywanego na tym połączeniu. Kolumna most_recent_sql_handle jest zawsze zsynchronizowana z kolumną most_recent_session_id . Jest dopuszczana wartość null.
pdw_node_id int Dotyczy do: Azure Synapse Analytics, Analytics Platform System (PDW)

Identyfikator węzła, w ramach którego znajduje się ta dystrybucja.

Permissions

W programie SQL Server i usłudze SQL Managed Instance wymagane jest VIEW SERVER STATE uprawnienie.

W przypadku celów usługi Azure SQL Database Basic, S0 i S1 oraz baz danych w elastycznych pulach wymagane jest konto administratora serwera , konto administratora firmy Microsoft Entra lub członkostwo w ##MS_ServerStateReader##roli serwera . We wszystkich innych celach usługi SQL Database wymagane VIEW DATABASE STATE jest uprawnienie do bazy danych lub członkostwo w ##MS_ServerStateReader## roli serwera.

Uprawnienia dla programu SQL Server 2022 i nowszych

Wymaga uprawnienia WYŚWIETL STAN WYDAJNOŚCI SERWERA na serwerze.

Połączenia fizyczne

Schemat fizycznych połączeń dla sys.dm_exec_connections.

Kardynały relacji

Pierwszy element Drugi element Relacja
sys.dm_exec_sessions.session_id sys.dm_exec_connections.session_id Jeden do zera lub jeden do wielu
sys.dm_exec_requests.connection_id sys.dm_exec_connections.connection_id Wiele do jednego
sys.dm_broker_connections.connection_id sys.dm_exec_connections.connection_id Jeden do jednego

Najczęściej dla każdego wiersza w sys.dm_exec_connections istnieje pojedynczy pasujący wiersz w sys.dm_exec_sessions. Jednak w niektórych przypadkach, takich jak sesje wewnętrzne systemu lub procedury aktywacji Service Brokera , może istnieć wiersz w bez sys.dm_exec_sessions dopasowania wiersza w sys.dm_exec_connections.

Gdy używany jest MARS, może być wiele wierszy w sys.dm_exec_connections wierszu w sys.dm_exec_sessions, jeden wiersz dla połączenia nadrzędnego i jeden wiersz dla każdej sesji logycznej MARS. Te ostatnie wiersze można zidentyfikować po wartości w kolumnie net_transport ustawionej na Session. Dla tych połączeń wartość w kolumnie connection_id odpowiada sys.dm_exec_connections wartości w kolumnie connection_id dla sys.dm_exec_requests żądań MARS w trakcie.

Przykłady

Następne Transact-SQL zapytanie zbiera informacje o powiązaniu zapytania.

SELECT   
    c.session_id, c.net_transport, c.encrypt_option,   
    c.auth_scheme, s.host_name, s.program_name,   
    s.client_interface_name, s.login_name, s.nt_domain,   
    s.nt_user_name, s.original_login_name, c.connect_time,   
    s.login_time   
FROM sys.dm_exec_connections AS c  
JOIN sys.dm_exec_sessions AS s  
    ON c.session_id = s.session_id  
WHERE c.session_id = @@SPID;  

Dalsze kroki

Dowiedz się więcej o powiązanych pojęciach w następujących artykułach: