Última actividad 8 months ago

想知道 SQL Server 有多少人連進來?哪台機器最吵?哪些查詢塞住了系統?這份查詢筆記讓你一目了然 🧠

Revisión 23e42cff328047dd0de1930bea9d3404e12e4d88

sql_server_connection_queries.sql Sin formato
1-- 🔍 檢查目前 SQL Server 總連線數(包含系統連線)
2SELECT COUNT(*) AS TotalConnections
3FROM sys.dm_exec_sessions;
4
5-- 🔍 只統計使用者的連線數(不包含 SQL Server 內部系統連線)
6SELECT COUNT(*) AS UserConnections
7FROM sys.dm_exec_sessions
8WHERE is_user_process = 1;
9
10-- 🔍 查詢目前 "活躍" 的連線數
11SELECT COUNT(*) AS ActiveConnections
12FROM sys.dm_exec_connections;
13
14-- 🔍 查看每個 IP 連線的數量(用來分析哪個 IP 連接最多)
15SELECT client_net_address, COUNT(*) AS ConnectionCount
16FROM sys.dm_exec_connections
17JOIN sys.dm_exec_sessions
18ON sys.dm_exec_connections.session_id = sys.dm_exec_sessions.session_id
19WHERE is_user_process = 1
20GROUP BY client_net_address;
21
22-- 🔍 用 sp_who2 查看詳細的連線資訊
23-- 可以看到哪些帳號在連線、連線的主機、目前執行的查詢等
24EXEC sp_who2;
25
26-- 🔍 舊版 SQL Server 可用 sys.sysprocesses 查詢連線數
27SELECT COUNT(*) AS TotalConnections
28FROM sys.sysprocesses
29WHERE dbid > 0;
30
31-- ✅ 啟用進階選項(某些設定需要開啟這個才看得到)
32EXEC sp_configure 'show advanced options', 1;
33RECONFIGURE;
34
35-- 🔍 檢查 SQL Server 允許的最大連線數
36EXEC sp_configure 'user connections';
37
38-- 🔍 查詢 SQL Server 等待統計(找出系統可能的瓶頸)
39-- 如果某個 wait_type 的等待時間很長,代表這個部分可能是效能瓶頸
40SELECT wait_type, waiting_tasks_count, wait_time_ms
41FROM sys.dm_os_wait_stats
42ORDER BY wait_time_ms DESC;
43