SQL Server Troubleshooting 疑難排解起手式 🎮

2022-07-10

筆記 SQL Server 在 Troubleshooting 疑難排解上,可以觀察的伺服器資訊以及進行的動作。

SQL Server Logo

說明

活動監視器

觀察目前進行中的查詢,尤其觀察「使用中的費時查詢」搭配 sp_who2 取得 Process 的相關資訊。

「使用中的費時查詢」可以對查詢右鍵取得完整的查詢內容,從「處理序」可以對照「使用中的費時查詢」的 SPID 使用右鍵進行中止 (Kill)。

活動監視器 | Activity Monitor

使用 sp_who2 可以觀察到來源的 HostName、被 Block 的 SPID 及 ProgramName,其中 ProgramName 可以參考 SQL Server 使用 sp_who2 查詢到的 ProgramName 意義 得到更多的疑難排解所需資訊。

如果需要使用 sp_who2 進行篩選,可以搭配 temp Table:

DECLARE @Table TABLE(
        SPID INT,
        Status VARCHAR(MAX),
        LOGIN VARCHAR(MAX),
        HostName VARCHAR(MAX),
        BlkBy VARCHAR(MAX),
        DBName VARCHAR(MAX),
        Command VARCHAR(MAX),
        CPUTime INT,
        DiskIO INT,
        LastBatch VARCHAR(MAX),
        ProgramName VARCHAR(MAX),
        SPID_1 INT,
        REQUESTID INT
)

-- 將 sp_who2 寫入 Temp Table
INSERT INTO @Table EXEC sp_who2

SELECT * FROM @Table

sp_who2 外,可以使用第三方的 Stored Procedures sp_whoisactive 得到更為完整的 Process 資訊。

在使用 sp_who2 上,如果需要知道連線的 Prcoess Id 可以使用使用 sys.sysprocesses 進行查詢,查詢上也可以輔助排序與篩選的作業。

SELECT spid
,kpid
,login_time
,last_batch
,status
,hostname
,nt_username
,loginame
,hostprocess
,cpu
,memusage
,physical_io
FROM sys.sysprocesses

標準報表

「效能儀錶板」用以確認 CPU 使用情形以及等候中的 Requests。

效能儀錶板 | Performance Dashboard

「伺服器儀錶板」用以確認最近的開機時間以及資料庫伺服器的組態設定。

伺服器儀錶板 | Server Dashboard

SQL Server Agent

觀察「作業活動監視器」以及對 SQL Server Agent 使用「標準報表」觀察 排名最前面的作業,觀察排程作業的執行情形。

作業活動監視器 | Job Activity Monitor

確認「錯誤紀錄檔」,可一併觀察 SQL Server, SQL Server Agent, Database Mail 以及 Windows NT 的錯誤紀錄。

錯誤紀錄檔 | Logs

相關連結

SQL Server Integrated Service 初探

SQL Server 閃電般快速查詢指南⚡

SQL Server 周邊工具彙整筆記

SQL Server 學習資源筆記