运维管理13 分钟阅读
SQL Server 运维命令 100 条
SQL Server 提供了大量 DMV(Dynamic Management Views)用于监控和诊断,这些 DMV 是 DBA 日常排障最重要的工具。
2026年7月21日阅读—点赞—收藏—
dba100sql墨力计划sqlserver
在知识库中专注阅读,并随时返回相关工具与课程
SQL Server 提供了大量 DMV(Dynamic Management Views)用于监控和诊断,这些 DMV 是 DBA 日常排障最重要的工具。
做 SQL Server DBA,真正考验能力的不是会不会创建数据库,而是在生产环境出现 CPU 飙高、SQL 卡顿、阻塞堆积、日志暴涨、Always On 延迟时,能快速找到问题原因。
SQL Server 提供了大量 DMV(Dynamic Management Views)用于监控和诊断,这些 DMV 是 DBA 日常排障最重要的工具。
下面整理 100 条生产环境高频使用命令:

适用于 SQL Server 2016 / 2017 / 2019 / 2022。
1SELECT @@VERSION;1SELECT2SERVERPROPERTY('ProductVersion') AS Version,3SERVERPROPERTY('ProductLevel') AS Level,4SERVERPROPERTY('Edition') AS Edition,5SERVERPROPERTY('EngineEdition') AS EngineEdition;1SELECT SERVERPROPERTY('ServerName');1SELECT GETDATE();1SELECT sqlserver_start_time2FROM sys.dm_os_sys_info;1SELECT2cpu_count,3physical_memory_kb/1024 AS memory_mb,4virtual_machine_type_desc5FROM sys.dm_os_sys_info;1SELECT2name,3value_in_use4FROM sys.configurations5WHERE name='max server memory (MB)';1SELECT DB_NAME();1SELECT2name,3state_desc,4recovery_model_desc,5compatibility_level6FROM sys.databases;1SELECT2name,3create_date4FROM sys.databases;1SELECT2DB_NAME(database_id) AS database_name,3name,4physical_name,5size*8/1024 AS size_mb6FROM sys.master_files;1SELECT2DB_NAME(database_id) AS database_name,3name,4type_desc,5size*8/1024 AS size_mb6FROM sys.master_files;1SELECT2DB_NAME(database_id) AS database_name,3SUM(size)*8/1024 AS size_mb4FROM sys.master_files5GROUP BY database_id6ORDER BY size_mb DESC;1SELECT2DB_NAME(database_id),3name,4size*8/1024 AS log_mb5FROM sys.master_files6WHERE type_desc='LOG';1DBCC SQLPERF(LOGSPACE);1EXEC sp_spaceused;1SELECT TOP 202OBJECT_NAME(object_id) AS table_name,3SUM(reserved_page_count)*8/1024 AS size_mb4FROM sys.dm_db_partition_stats5GROUP BY object_id6ORDER BY size_mb DESC;1SELECT2OBJECT_NAME(object_id),3SUM(rows)4FROM sys.partitions5WHERE index_id IN (0,1)6GROUP BY object_id;1SELECT2name,3growth,4is_percent_growth5FROM sys.database_files;1SELECT2name,3recovery_model_desc4FROM sys.databases;1SELECT *2FROM sys.dm_exec_sessions;1SELECT2session_id,3status,4command,5cpu_time,6total_elapsed_time,7wait_type,8blocking_session_id9FROM sys.dm_exec_requests;1SELECT2r.session_id,3t.text4FROM sys.dm_exec_requests r5CROSS APPLY sys.dm_exec_sql_text(r.sql_handle)t;1SELECT2login_name,3COUNT(*)4FROM sys.dm_exec_sessions5GROUP BY login_name;1SELECT2host_name,3program_name,4login_name,5COUNT(*)6FROM sys.dm_exec_sessions7GROUP BY8host_name,9program_name,10login_name;1SELECT2session_id,3start_time,4total_elapsed_time/1000 AS seconds,5command6FROM sys.dm_exec_requests7ORDER BY total_elapsed_time DESC;1SELECT TOP 202session_id,3cpu_time,4logical_reads5FROM sys.dm_exec_requests6ORDER BY cpu_time DESC;1SELECT2session_id,3wait_type,4wait_time,5blocking_session_id6FROM sys.dm_exec_requests7WHERE wait_type IS NOT NULL;1SELECT2session_id,3blocking_session_id,4wait_type5FROM sys.dm_exec_requests6WHERE blocking_session_id<>0;1SELECT2blocking_session_id,3session_id,4wait_type,5wait_time6FROM sys.dm_exec_requests7WHERE blocking_session_id > 0;1SELECT2session_id,3status,4last_request_start_time5FROM sys.dm_exec_sessions6WHERE status='sleeping';1KILL 57;1SELECT2name,3value_in_use4FROM sys.configurations5WHERE name='user connections';1EXEC xp_readerrorlog;1SELECT TOP 202wait_type,3waiting_tasks_count,4wait_time_ms5FROM sys.dm_os_wait_stats6ORDER BY wait_time_ms DESC;1SELECT *2FROM sys.dm_tran_locks;1DBCC OPENTRAN;1SELECT *2FROM sys.dm_tran_active_transactions;1SELECT2session_id,3transaction_id,4transaction_begin_time5FROM sys.dm_tran_session_transactions;1SELECT2request_session_id,3resource_type,4request_mode,5request_status6FROM sys.dm_tran_locks7WHERE request_status='WAIT';1SELECT2blocking_session_id,3session_id,4wait_type,5wait_time6FROM sys.dm_exec_requests7WHERE blocking_session_id<>0;1SELECT *2FROM system_health.session_targets;1DBCC USEROPTIONS;1SELECT2COUNT(*)3FROM sys.dm_tran_active_transactions;1SELECT *2FROM sys.dm_tran_version_store_space_usage;1SELECT *2FROM sys.dm_db_file_space_usage;1SELECT2COUNT(*)3FROM sys.dm_tran_locks;1SELECT2wait_type,3resource_description4FROM sys.dm_os_waiting_tasks;1SELECT2*3FROM sys.dm_xe_sessions;1KILL session_id;1SELECT TOP 202qs.total_worker_time,3qt.text4FROM sys.dm_exec_query_stats qs5CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt6ORDER BY qs.total_worker_time DESC;1SELECT TOP 202execution_count,3text4FROM sys.dm_exec_query_stats5CROSS APPLY sys.dm_exec_sql_text(sql_handle)6ORDER BY execution_count DESC;1SELECT TOP 202total_elapsed_time/execution_count,3text4FROM sys.dm_exec_query_stats5CROSS APPLY sys.dm_exec_sql_text(sql_handle)6ORDER BY 1 DESC;1SELECT *2FROM sys.dm_exec_cached_plans;1SET SHOWPLAN_XML ON;2GO34SELECT *5FROM table_name;67GO8SET SHOWPLAN_XML OFF;1SELECT *2FROM sys.query_store_query;1SELECT TOP 202*3FROM sys.query_store_runtime_stats4ORDER BY avg_duration DESC;1SELECT TOP 202total_logical_reads,3text4FROM sys.dm_exec_query_stats5CROSS APPLY sys.dm_exec_sql_text(sql_handle)6ORDER BY total_logical_reads DESC;1SELECT TOP 202total_physical_reads,3text4FROM sys.dm_exec_query_stats5CROSS APPLY sys.dm_exec_sql_text(sql_handle)6ORDER BY total_physical_reads DESC;1SELECT2SUM(size_in_bytes)/1024/1024 AS MB3FROM sys.dm_exec_cached_plans;1SELECT *2FROM sys.indexes;1SELECT2OBJECT_NAME(object_id),3avg_fragmentation_in_percent4FROM sys.dm_db_index_physical_stats5(6NULL,NULL,NULL,NULL,'LIMITED'7);1ALTER INDEX ALL2ON table_name3REBUILD;1ALTER INDEX ALL2ON table_name3REORGANIZE;1UPDATE STATISTICS table_name;1SELECT *2FROM sys.dm_db_missing_index_details;1SELECT *2FROM sys.dm_db_index_usage_stats;1SELECT *2FROM sys.dm_db_index_usage_stats3WHERE user_seeks=04AND user_scans=0;1SELECT2name,3STATS_DATE(object_id,index_id)4FROM sys.indexes;1CREATE INDEX idx_name2ON table_name(column_name);1SELECT *2FROM sys.dm_hadr_availability_replica_states;1SELECT *2FROM sys.dm_hadr_database_replica_states;1SELECT2database_id,3log_send_queue_size,4redo_queue_size5FROM sys.dm_hadr_database_replica_states;1SELECT *2FROM sys.availability_groups;1SELECT *2FROM sys.availability_group_listeners;1SELECT *2FROM sys.availability_replicas;1SELECT2synchronization_health_desc3FROM sys.dm_hadr_availability_replica_states;1SELECT2database_name,3backup_start_date,4backup_finish_date,5type6FROM msdb.dbo.backupset7ORDER BY backup_finish_date DESC;1BACKUP DATABASE dbname2TO DISK='D:\backup\db.bak';1BACKUP LOG dbname2TO DISK='D:\backup\db.trn';1RESTORE DATABASE dbname2FROM DISK='D:\backup\db.bak';1SELECT TOP 10 *2FROM msdb.dbo.backupset3ORDER BY backup_finish_date DESC;1SELECT *2FROM msdb.dbo.restorehistory;1SELECT *2FROM sys.server_principals;1SELECT *2FROM sys.database_principals;1SELECT *2FROM sys.database_permissions;1CREATE LOGIN user12WITH PASSWORD='Password@123';1CREATE USER user12FOR LOGIN user1;1ALTER ROLE db_datareader2ADD MEMBER user1;1ALTER ROLE db_datawriter2ADD MEMBER user1;1DROP USER user1;1DROP LOGIN user1;1SELECT *2FROM msdb.dbo.sysjobs;1SELECT *2FROM msdb.dbo.sysjobhistory3WHERE run_status<>1;1EXEC xp_readerrorlog;1SELECT *2FROM sys.dm_db_file_space_usage;1SELECT *2FROM sys.dm_os_memory_clerks;1SELECT *2FROM sys.dm_os_schedulers;1SELECT *2FROM sys.dm_io_virtual_file_stats(NULL,NULL);1SELECT TOP 202wait_type,3wait_time_ms4FROM sys.dm_os_wait_stats5ORDER BY wait_time_ms DESC;SQL Server DBA 的核心能力,不是记住多少 T-SQL,而是面对生产问题时能够建立正确的排查路径。
例如:
真正成熟的 SQL Server DBA,掌握的是这些命令背后的诊断逻辑。
这篇和前面的 MySQL、PostgreSQL 可以形成你的 《DBA 三大数据库 100 条命令系列》。建议后续补一篇 Oracle DBA 实用 100 条命令,这个系列完整度会更高。