SQL Server Troubleshooting 疑難排解起手式 🎮
2022-07-10
筆記 SQL Server 在 Troubleshooting 疑難排解上,可以觀察的伺服器資訊以及進行的動作。
說明
活動監視器
觀察目前進行中的查詢,尤其觀察「使用中的費時查詢」搭配 sp_who2
取得 Process 的相關資訊。
「使用中的費時查詢」可以對查詢右鍵取得完整的查詢內容,從「處理序」可以對照「使用中的費時查詢」的 SPID 使用右鍵進行中止 (Kill)。
使用 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。
「伺服器儀錶板」用以確認最近的開機時間以及資料庫伺服器的組態設定。
SQL Server Agent
觀察「作業活動監視器」以及對 SQL Server Agent 使用「標準報表」觀察 排名最前面的作業,觀察排程作業的執行情形。
確認「錯誤紀錄檔」,可一併觀察 SQL Server, SQL Server Agent, Database Mail 以及 Windows NT 的錯誤紀錄。