首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server DBA 必備 T-SQL 命令大全:版本、配置、空間、索引、鎖、死鎖、備份修復、性能分析

     編輯:關於SqlServer

一、實例與版本信息

-- 版本詳情
SELECT @@VERSION;

-- 操作系統參數
EXEC master..xp_msver;

-- 實例配置
EXEC sp_configure;              -- 顯示所有高級選項(需先開啟 show advanced options)
SELECT @@SERVERNAME AS ServerName, @@SERVICENAME AS InstanceName;

-- 啟動時間
SELECT sqlserver_start_time FROM sys.dm_os_sys_info;  -- 2008+ 推薦
-- 老版本兼容
SELECT CONVERT(VARCHAR(30), login_time, 120) 
FROM master..sysprocesses WHERE spid = 1;

二、數據庫級對象管理

-- 所有庫大小
EXEC sp_helpdb;

-- 重命名庫
EXEC sp_renamedb 'old_name', 'new_name';

-- 單庫對象大小
EXEC sp_spaceused 'TableName';           -- 表大小
EXEC sp_spaceused 'IndexName';           -- 索引大小(需在表上下文)

-- 最大 N 張表
EXEC sp_toptables @num = 20;             -- 非系統存儲過程,可能需自建

-- 索引信息
EXEC sp_helpindex 'TableName';           -- 基礎信息
-- 詳細索引信息(自建 SP_NChelpindex 或查詢 sys.indexes/sys.partitions)

-- 約束信息
EXEC sp_helpconstraint 'TableName';

-- 存儲過程/函數列表
USE TargetDB;
EXEC sp_stored_procedures;

-- 查看源碼
EXEC sp_helptext 'proc_name';

-- 搜索包含關鍵字的對象
SELECT DISTINCT OBJECT_NAME(id) 
FROM syscomments 
WHERE text LIKE '%keyword%';

-- 加密創建
CREATE PROC secret_proc WITH ENCRYPTION AS SELECT 1;
-- 解密(需第三方工具或 DAC 連接查詢 sys.sysobjvalues)

三、用戶、權限、會話、鎖

-- 所有登錄信息
EXEC sp_helplogins;

-- 服務器角色成員
EXEC sp_helpsrvrolemember;

-- 修復孤立用戶(遷移後)
EXEC sp_change_users_login 'Report';                    -- 查看孤立用戶
EXEC sp_change_users_login 'Auto_Fix', 'user', NULL, 'pwd'; -- 自動建登錄並映射
EXEC sp_change_users_login 'Update_One', 'user', 'user';   -- 映射現有登錄

-- 更改對象擁有者
EXEC sp_changeobjectowner 'schema.table', 'new_owner';

-- 當前會話/進程
EXEC sp_who;                    -- 全部
EXEC sp_who 'active';           -- 僅活躍

-- 鎖信息
EXEC sp_lock;                   -- spid > 50 為用戶進程

-- 進程執行的 SQL 文本
DBCC INPUTBUFFER (spid);        -- 需 SA 權限
-- 推薦改進版 sp_who3(自帶 SQL 文本)

-- 死鎖檢查
EXEC sp_who_lock;               -- 自建存儲過程

四、日志與空間維護

-- 簡單恢復模式收縮日志
BACKUP LOG DBName WITH NO_LOG;           -- 2005/2008 僅支持,2008 R2+ 棄用
DBCC SHRINKFILE (DBName_Log, 500);       -- 目標 500 MB

-- 完整恢復模式正確收縮流程
BACKUP LOG DBName TO DISK = '...trn';    -- 先備份日志
DBCC SHRINKFILE (DBName_Log, 500);

五、性能分析與執行計劃

命令/設置用途輸出形式
SET STATISTICS TIME ON編譯/執行耗時Messages 窗口
SET STATISTICS IO ON邏輯/物理讀、掃描次數Messages 窗口
SET SHOWPLAN_ALL ON估計執行計劃(文本)Grid
SET SHOWPLAN_TEXT ON估計計劃(簡化文本)Grid
SET STATISTICS PROFILE ON實際執行計劃 + 統計Grid
SSMS Ctrl+L / 工具欄圖標圖形化估計計劃圖形
SSMS Ctrl+M / 實際執行計劃圖形化實際計劃圖形

六、損壞修復(慎用,先備份)

-- 單表修復(允許數據丟失)
ALTER DATABASE [ErrDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKTABLE ('ErrTable', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE [ErrDB] SET MULTI_USER;

-- 全庫修復
ALTER DATABASE [ErrDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DBCC CHECKDB ('ErrDB', REPAIR_ALLOW_DATA_LOSS);
ALTER DATABASE [ErrDB] SET MULTI_USER;

修復級別: REPAIR_FAST(輕微、無數據損失)< REPAIR_REBUILD(重建索引、無損失)< REPAIR_ALLOW_DATA_LOSS(分配/取消分配頁、刪除損壞對象,可能丟數據)。

七、鏈接服務器與遠端登錄


EXEC sp_helplinkedsrvlogin;   -- 鏈接服務器登錄映射
EXEC sp_helpremotelogin;      -- 遠端登錄信息
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved