1. 版本與環境資訊
-- 版本號
SELECT @@VERSION;
-- 作業系統參數
EXEC master..xp_msver;
-- 啟動參數
EXEC sp_configure;
-- 啟動時間
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);
2. 資料庫層級操作
-- 所有資料庫名稱與大小
EXEC sp_helpdb;
-- 重命名資料庫
EXEC sp_renamedb 'old_db', 'new_db';
3. 登入與使用者管理
-- 所有登入資訊
EXEC sp_helplogins;
-- 伺服器角色成員
EXEC sp_helpsrvrolemember;
-- 修復孤立使用者 (遷移後常用)
EXEC sp_change_users_login 'Auto_Fix', 'user_name';
-- 變更物件擁有者
EXEC sp_changeobjectowner 'schema.object', 'new_owner';
4. 連結伺服器與遠端登入
EXEC sp_helplinkedsrvlogin;
EXEC sp_helpremotelogin;
5. 空間與索引分析
-- 物件空間使用量
EXEC sp_spaceused 'table_name';
-- 最大 N 個資料表 (預設 50)
EXEC sp_toptables;
-- 索引資訊
EXEC sp_helpindex 'table_name';
-- 更詳細 (非官方擴展預存程序)
EXEC SP_NChelpindex 'table_name';
-- 約束資訊
EXEC sp_helpconstraint 'table_name';
6. 預存程序與函數管理
-- 列出所有 SP/Function
USE db_name; EXEC sp_stored_procedures;
-- 檢視原始碼
EXEC sp_helptext 'proc_name';
-- 搜尋含特定字串的物件
SELECT DISTINCT OBJECT_NAME(id)
FROM syscomments WHERE text LIKE '%keyword%';
-- 加密建立
CREATE PROC proc_name WITH ENCRYPTION AS ...;
-- 解密 (需第三方工具或 sp_decrypt 等社群腳本)
7. 程序、鎖死與效能監控
-- 所有程序
EXEC sp_who;
-- 僅作用中
EXEC sp_who 'active';
-- 鎖狀況
EXEC sp_lock;
-- 查看特定 SPID 執行的 SQL
DBCC INPUTBUFFER(spid);
-- 推薦強化版:直接顯示 SQL 文字
EXEC sp_who3; -- 社群改良版
-- 死鎖偵測
EXEC sp_who_lock;
8. 縮減交易記錄檔 (簡單復原模式)
BACKUP LOG db_name WITH NO_LOG;
DBCC SHRINKFILE (db_name_log, 目標_MB);
-- 完整復原模式請改用 LOG BACKUP + SHRINKFILE
使用提醒
- 系統程序號 1-50 保留給內部,使用者連線 SPID > 50。
sp_configure 變更需 RECONFIGURE 生效。
- 生產環境操作前請先備份、驗證腳本。