整理 SQL Server 日常管理、監控、疑難排查最常用的系統預存程序與 T-SQL 查詢,供 DBA 與開發人員快速參考。
-- 版本詳細資訊
SELECT @@VERSION;
-- 作業系統層級資訊
EXEC master..xp_msver;
-- 伺服器啟動參數
EXEC sp_configure; -- 或 SELECT * FROM sys.configurations;
-- 伺服器啟動時間
SELECT CONVERT(VARCHAR(30), login_time, 120)
FROM master..sysprocesses WHERE spid = 1;
-- 伺服器名稱與實例名
PRINT 'Server Name: ' + CONVERT(VARCHAR(30), @@SERVERNAME);
PRINT 'Instance: ' + CONVERT(VARCHAR(30), @@SERVICENAME);
-- 所有資料庫名稱、大小、狀態
EXEC sp_helpdb;
-- 重新命名資料庫
EXEC sp_renamedb 'old_name', 'new_name';
-- 查看特定資料庫物件大小
EXEC sp_spaceused 'TableName'; -- 或 sp_spaceused @objname = 'TableName'
-- 查看前 N 大資料表(預設 50)
EXEC sp_toptables; -- 非標準,建議改用 sys.dm_db_partition_stats 查詢
-- 所有登入帳號資訊
EXEC sp_helplogins;
-- 伺服器角色成員
EXEC sp_helpsrvrolemember;
-- 修復遷移後的孤立使用者
EXEC sp_change_users_login 'Auto_Fix', 'username';
-- 變更物件擁有者
EXEC sp_changeobjectowner 'Schema.Table', 'NewOwner';
-- 檢視連結伺服器登入對應
EXEC sp_helplinkedsrvlogin;
-- 檢視遠端登入
EXEC sp_helpremotelogin;
-- 物件索引資訊
EXEC sp_helpindex 'TableName';
-- 詳細索引資訊(非標準,部分版本支援)
EXEC SP_NChelpindex 'TableName';
-- 物件條件約束資訊
EXEC sp_helpconstraint 'TableName';
-- 列出所有預存程序與函數
USE YourDatabase;
EXEC sp_stored_procedures;
-- 檢視原始碼
EXEC sp_helptext 'ProcedureName';
-- 搜尋包含特定字串的物件
SELECT DISTINCT OBJECT_NAME(id)
FROM syscomments
WHERE TEXT LIKE '%SearchString%';
-- 建立加密預存程序
CREATE PROC EncryptedProc WITH ENCRYPTION AS SELECT 1;
-- 解密(需第三方工具或 sp_decrypt 非官方)
掌握這些指令可大幅提升日常巡檢、異常排查與變更作業效率。下集將介紹程序監控、鎖死鎖分析、效能分析、資料庫修復與維護指令。