CÁC CÂU LỆNH TRONG SQL
1. kiểm tra SQL xài bao nhiêu core: SELECT cpu_count, scheduler_count FROM sys.dm_os_sys_info;
2. SQL đang xử lý bao nhiêu request: SELECT COUNT(*) AS ActiveSessions FROM sys.dm_exec_requests;
3. Kiểm tra có bao nhiêu user đang kết nối: SELECT COUNT(*) AS ConnectedUsers FROM sys.dm_exec_sessions WHERE is_user_process = 1;
4. Kiểm tra SQL có bị nghẽn không: SELECT session_id,status,blocking_session_id,wait_type,wait_time FROM sys.dm_exec_requests WHERE blocking_session_id <> 0;
5. Chi tiết các session đang chạy: SELECT session_id, login_name, host_name, program_name, status FROM sys.dm_exec_sessions ORDER BY session_id;
6. Xem IP WAN nào kết nối vào SQL: SELECT client_net_address,connect_time FROM sys.dm_exec_connections WHERE client_net_address IS NOT NULL;
7. Lệnh xem phiên bản version SQL: SELECT SERVERPROPERTY('ProductVersion') AS ProductVersion,SERVERPROPERTY('ProductLevel') AS ProductLevel,SERVERPROPERTY('Edition') AS Edition,SERVERPROPERTY('EngineEdition') AS EngineEdition;
8. Xem thông tin Lience của SQL: SELECT SERVERPROPERTY('Edition') AS Edition,SERVERPROPERTY('ProductVersion') AS Version,SERVERPROPERTY('LicenseType') AS LicenseType,SERVERPROPERTY('NumLicenses') AS NumLicenses
9. Xem query nào đang chạy:
SELECT r.session_id, r.status, r.cpu_time, r.total_elapsed_time, r.reads, r.writes, r.logical_reads, r.wait_type, r.wait_time, r.blocking_session_id, t.text AS sql_text FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE r.session_id > 50 ORDER BY r.total_elapsed_time DESC;
10. Xem PC nào & đang làm gì:
SELECT s.session_id, s.host_name, s.login_name, r.status, r.cpu_time, r.total_elapsed_time, r.logical_reads, r.writes, r.wait_type, r.blocking_session_id, DB_NAME(r.database_id) AS database_name, SUBSTRING(t.text, (r.statement_start_offset/2)+1, ((CASE r.statement_end_offset WHEN -1 THEN DATALENGTH(t.text) ELSE r.statement_end_offset END - r.statement_start_offset)/2) + 1 ) AS current_query FROM sys.dm_exec_sessions s LEFT JOIN sys.dm_exec_requests r ON s.session_id = r.session_id OUTER APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE s.is_user_process = 1 ORDER BY r.total_elapsed_time DESC;
11 Xem user nào là lag hệ thống: SELECT TOP 5 s.host_name, s.program_name, r.cpu_time, r.total_elapsed_time, t.text FROM sys.dm_exec_requests r JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t ORDER BY r.cpu_time DESC;
12. Kiểm tra user id có quá tải không: SELECT r.session_id, r.cpu_time, r.total_elapsed_time, r.logical_reads, r.reads, r.writes FROM sys.dm_exec_requests r WHERE r.session_id > 50
13 Kill session nếu bị quá tải: KILL <session_id>
14 Lệnh kiểm tra CPU có bị nghẽn không: SELECT scheduler_id, cpu_id, current_tasks_count, runnable_tasks_count FROM sys.dm_os_schedulers WHERE status = 'VISIBLE ONLINE'
runnable_tasks_count > 0→ CPU đang nghẽn
15. Khi user báo “đang quay loading” → chạy ngay: SELECT r.session_id, r.status, r.wait_type, r.wait_time, r.cpu_time, r.logical_reads, t.text FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE r.session_id > 50
(Lưu ý: 50 là do cấu hình Cost Threshold sql)
16. Code sao lưu dữ liệu hàng ngày (SQL Server Agent > Jobs)
DECLARE @FileName NVARCHAR(300)
SET @FileName = 'C:\Backup_SQL\TenDB_'
+ CONVERT(VARCHAR, GETDATE(), 112) + '_'
+ REPLACE(CONVERT(VARCHAR, GETDATE(), 108), ':', '') + '.bak'
BACKUP DATABASE TenDB
TO DISK = @FileName
WITH COMPRESSION, STATS = 10;