Tôi có Máy chủ SQL đang đạt đến giới hạn tối đa của các kết nối đồng thời. Tôi có nhiều máy chủ khác nhau & dịch vụ kết nối với một Máy chủ SQL cùng một lúc.SQL - Cách tìm những hành động nào đang sử dụng tất cả các kết nối đồng thời tối đa
tôi đã tìm thấy một truy vấn mà dường như làm việc:
SELECT DB_NAME(dbid) AS DBName,
COUNT(dbid) AS NumberOfConnections,
loginame AS LoginName,
nt_domain AS NT_Domain,
nt_username AS NT_UserName,
hostname AS HostName
FROM sys.sysprocesses
WHERE dbid > 0
GROUP BY dbid,
hostname,
loginame,
nt_domain,
nt_username
ORDER BY NumberOfConnections DESC;
Tuy nhiên, điều này mang lại cho tôi số lượng kết nối đó là tốt. Vì vậy, sau đó tôi tìm thấy một truy vấn mà dường như nhổ ra các báo cáo sql rằng er đang chạy vv
SELECT
SPID = er.session_id
,STATUS = ses.STATUS
,[Login] = ses.login_name
,Host = ses.host_name
,BlkBy = er.blocking_session_id
,DBName = DB_Name(er.database_id)
,CommandType = er.command
,SQLStatement = st.text
,ObjectName = OBJECT_NAME(st.objectid)
,ElapsedMS = er.total_elapsed_time
,CPUTime = er.cpu_time
,IOReads = er.logical_reads + er.reads
,IOWrites = er.writes
,LastWaitType = er.last_wait_type
,StartTime = er.start_time
,Protocol = con.net_transport
,ConnectionWrites = con.num_writes
,ConnectionReads = con.num_reads
,ClientAddress = con.client_net_address
,Authentication = con.auth_scheme
FROM sys.dm_exec_requests er
OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
LEFT JOIN sys.dm_exec_sessions ses
ON ses.session_id = er.session_id
LEFT JOIN sys.dm_exec_connections con
ON con.session_id = ses.session_id
làm cách nào để hợp nhất cả hai truy vấn này lại với nhau? Tôi tin rằng cả hai truy vấn này cùng nhau sẽ cho tôi những gì tôi cần.
[sp_whoisactive] (http: // sqlblog .com/blogs/adam_machanic/archive/2012/03/22/release-who-is-active-v11-11.aspx) có thể rất hữu ích cho bạn –