-- 🔍 檢查目前 SQL Server 總連線數（包含系統連線）
SELECT COUNT(*) AS TotalConnections
FROM sys.dm_exec_sessions;

-- 🔍 只統計使用者的連線數（不包含 SQL Server 內部系統連線）
SELECT COUNT(*) AS UserConnections
FROM sys.dm_exec_sessions
WHERE is_user_process = 1;

-- 🔍 查詢目前 "活躍" 的連線數
SELECT COUNT(*) AS ActiveConnections
FROM sys.dm_exec_connections;

-- 🔍 查看每個 IP 連線的數量（用來分析哪個 IP 連接最多）
SELECT client_net_address, COUNT(*) AS ConnectionCount
FROM sys.dm_exec_connections
JOIN sys.dm_exec_sessions
ON sys.dm_exec_connections.session_id = sys.dm_exec_sessions.session_id
WHERE is_user_process = 1
GROUP BY client_net_address;

-- 🔍 用 sp_who2 查看詳細的連線資訊
-- 可以看到哪些帳號在連線、連線的主機、當前執行的查詢等
EXEC sp_who2;

-- 🔍 舊版 SQL Server 可用 sys.sysprocesses 查詢連線數
SELECT COUNT(*) AS TotalConnections
FROM sys.sysprocesses
WHERE dbid > 0;

-- ✅ 啟用進階選項（某些設定需要開啟這個才看得到）
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

-- 🔍 檢查 SQL Server 允許的最大連線數
EXEC sp_configure 'user connections';

-- 🔍 查詢 SQL Server 等待統計（找出系統可能的瓶頸）
-- 如果某個 wait_type 的等待時間很長，代表這個部分可能是效能瓶頸
SELECT wait_type, waiting_tasks_count, wait_time_ms
FROM sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC;
