用 Transact-SQL 語句監視
SQL Server 提供一些 Transact-SQL 語句和系統儲存過程,用於對 SQL Server 例項進行特殊監視。當想要快速檢視有關伺服器效能和活動的資訊時,可以使用這些語句。
[@more@]1. 檢視當前的鎖
語法
sp_lock [[@spid1 =] 'spid1'] [,[@spid2 =] 'spid2']
引數
[@spid1 =] 'spid1'
是來自 master.dbo.sysprocesses 的 Microsoft® SQL Server™ 程式 ID 號。spid1 的資料型別為 int,預設值為 NULL。執行 sp_who 可獲取有關該鎖的程式資訊。如果沒有指定 spid1,則顯示所有鎖的資訊。
[@spid2 =] 'spid2'
是用於檢查鎖資訊的另一個 SQL Server 程式 ID 號。spid2 的資料型別為 int,預設設定為 NULL。spid2 為可以與 spid1 同時擁有鎖的另一個 spid,使用者還可獲取有關它的資訊。
說明 sp_who 可含有 0 個、1 個或 2 個引數。這些引數確定儲存過程是顯示全部、1 個還是 2 個 spid 程式的鎖定資訊。
許可權
執行許可權預設授予 public 角色。
示例
A. 列出所有鎖
下面的示例顯示 SQL Server 中當前持有的所有鎖的資訊。
USE master
EXEC sp_lock
B. 列出單個伺服器程式的鎖
下例顯示程式 ID 53 的資訊(其中包括鎖資訊)。
USE master
EXEC sp_lock 53
鎖的型別:
DB:資料庫
FIL:檔案
IDX:索引
PG:頁
KEY:鍵
TAB:表
EXT:擴充套件盤區
RID:行識別符號
鎖的請求狀態 :
GRANT
WAIT
CNVRT
2. 檢視當前使用者活動
語法
sp_who [[@login_name =] 'login']
SQL Server 2000 保留從 1 到 50 的 SPID 值以便內部使用,而 51 或更大的 SPID 值則代表使用者會話。
許可權
執行許可權預設授予 public 角色。
示例
A. 列出全部當前程式
此示例使用沒有引數的 sp_who 報告所有當前使用者。
USE master
EXEC sp_who
下面是結果集:
spid ecid status loginame hostname blk dbname cmd
---- ---- ------ ------------ -------- --- ------ -----
1 0 background sa 0 pubs LAZY WRITER
2 0 sleeping sa 0 pubs LOG WRITER
3 0 background sa 0 master SIGNAL HANDLER
4 0 background sa 0 pubs RA MANAGER
5 0 background sa 0 master TASK MANAGER
6 0 sleeping sa 0 pubs CHECKPOINT SLEEP
7 0 background sa 0 master TASK MANAGER
8 0 background sa 0 master TASK MANAGER
9 0 background sa 0 master TASK MANAGER
10 0 background sa 0 master TASK MANAGER
11 0 background sa 0 master TASK MANAGER
51 0
runnable DOMAIN
loginX
serverX 0 Nwind BACKUP DATABASE
51 2
runnable DOMAIN
loginX
serverX 0 Nwind BACKUP DATABASE
51 1
runnable DOMAIN
loginX
serverX 0 Nwind BACKUP DATABASE
52 0 sleeping DOMAIN
loginX
serverX 0 master AWAITING COMMAND
53 0 runnable DOMAIN
loginX
serverX 0 pubs SELECT
(16 row(s) affected)
B. 列出特定使用者的程式
此示例顯示如何透過登入名檢視有關單個當前使用者的資訊。
USE master
EXEC sp_who 'janetl'
C. 顯示所有活動程式
USE master
EXEC sp_who 'active'
D. 透過程式 ID 顯示特定程式
USE master
EXEC sp_who '10' --specifies the process_id
3. 檢視使用者上次提交的批命令
語法
DBCC INPUTBUFFER (spid)
許可權
DBCC INPUTBUFFER 許可權預設授予 sysadmin 固定伺服器角色的成員,該成員可以看到任何 SPID。其他使用者可以看到自己擁有的 SPID。許可權不可轉讓。
4. 檢視錶或資料庫使用的資料空間
顯示行數、保留的磁碟空間以及當前資料庫中的表所使用的磁碟空間,或顯示由整個資料庫保留和使用的磁碟空間。
許可權
執行許可權預設授予 public 角色。
語法
sp_spaceused [[@objname =] 'objname']
[,[@updateusage =] 'updateusage']
引數
[@objname =] 'objname'
是為其請求空間使用資訊(保留和已分配的空間)的表名。objname 的資料型別是 nvarchar(776),預設設定為 NULL。
[@updateusage =] 'updateusage'
表示應在資料庫內(未指定 objname 時)還是在特定的物件上(指定 objname 時)執行 DBCC UPDATEUSAGE。值可以是 true 或 false。updateusage 的資料型別是 varchar(5),預設設定為 FALSE。
示例
A. 有關表的空間資訊
下例報告為 titles 表分配(保留)的空間量、資料使用的空間量、索引使用的空間量以及由資料庫物件保留的未用空間量。
USE pubs
EXEC sp_spaceused 'titles'
B. 有關整個資料庫的已更新空間資訊
下例概括當前資料庫使用的空間並使用可選引數 @updateusage。
USE pubs
sp_spaceused @updateusage = 'TRUE'
註釋
sp_spaceused 計算資料和索引使用的磁碟空間量以及當前資料庫中的表所使用的磁碟空間量。如果沒有給定 objname,sp_spaceused 則報告整個當前資料庫所使用的空間。
當指定 updateusage 時,Microsoft® SQL Server™ 掃描資料庫中的資料頁,並就每個表使用的儲存空間對 sysindexes 表作出任何必要的糾正。例如會出現這樣一些情況:當除去索引後,表的 sysindexes 資訊可能不是當前的。該程式在大表或資料庫上可能要花一些時間執行。只有當懷疑所返回的值不正確,而且該程式對資料庫中的其它使用者或程式沒有負面影響時,才應使用該程式。如果首選該程式,則可以單獨執行 DBCC UPDATEUSAGE。
5. 檢視事務日誌使用的空間
語法
DBCC SQLPERF ( LOGSPACE )
許可權
DBCC SQLPERF 對任何使用者預設許可權。
示例
下例顯示當前安裝的所有資料庫的 LOGSPACE 資訊。
DBCC SQLPERF(LOGSPACE)
GO
下面是結果集:
Database Name Log Size (MB) Log Space Used (%) Status
------------- ------------- ------------------ -----------
pubs 1.99219 4.26471 0
msdb 3.99219 17.0132 0
tempdb 1.99219 1.64216 0
model 1.0 12.7953 0
master 3.99219 14.3469 0
6. 檢視資料庫中時間最久的活動事務(包括複製的事務)
許可權
DBCC OPENTRAN 許可權預設授予 sysadmin 固定伺服器角色或 db_owner 固定資料庫角色的成員且不可轉讓。
語法
DBCC OPENTRAN
( { 'database_name' | database_id} )
[ WITH TABLERESULTS
[ , NO_INFOMSGS ]
]
示例
下例獲得當前資料庫和 pubs 資料庫的事務資訊。
-- Display transaction information only for the current database.
DBCC OPENTRAN
GO
-- Display transaction information for the pubs database.
DBCC OPENTRAN('pubs')
GO
7. 檢視I/O、記憶體和網路吞吐量的效能資訊
sysperfinfo
8. 檢視過程快取記憶體的使用情況
許可權
DBCC PROCCACHE 許可權預設授予 sysadmin 固定伺服器角色或 db_owner 固定資料庫角色的成員且不可轉讓。
語法
DBCC PROCCACHE
註釋:
num proc buffs:過程快取記憶體中可能有的儲存過程數。
num proc buffs used: 容納儲存過程的快取記憶體槽數。
num proc buffs active: 容納正在執行的儲存過程的快取記憶體槽數。
proc cache size: 過程快取記憶體的總大小。
proc cache used: 容納儲存過程的過程快取記憶體量。
proc cache active: 容納正在執行的儲存過程的過程快取記憶體量。
9. 檢視 SQL Server 活動和使用的常規統計資訊
如 CPU 用於執行 SQL Server 操作的時間,或 SQL Server 用於執行 I/O 操作的時間,SQL Server 讀寫取的次數以及讀取和寫入時遇到的錯誤數。
許可權
執行許可權預設賦予 sysadmin 固定伺服器角色的成員。
示例
下面的示例報告有關 SQL Server 繁忙程度的資訊。
USE master
EXEC sp_monitor
10. 終止程式
語法
KILL {spid | UOW} [WITH STATUSONLY]
使用 @@SPID 可顯示當前會話的 SPID 值。
許可權
預設情況下,sysadmin 和 processadmin 固定資料庫角色的成員具有 KILL 的預設許可權,KILL 許可權不可轉讓。
示例
A. 使用 KILL 終止 SPID
下面的示例顯示如何終止 SPID 53。
KILL 53
B. 使用 KILL spid WITH STATUSONLY 獲得進度報告。
下面的示例為特定的 spid 生成回滾程式的狀態。
KILL 54
KILL 54 WITH STATUSONLY
--This is the progress report.
spid 54: Transaction rollback in progress. Estimated rollback completion: 80% Estimated time left: 10 seconds.
C. 使用 KILL 終止孤立的分散式事務。
下例說明如何使用 UOW = D5499C66-E398-45CA-BF7E-DC9C194B48CF 終止孤立 (SPID = -2) 事務。
KILL 'D5499C66-E398-45CA-BF7E-DC9C194B48CF'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/66009/viewspace-803282/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 檢視佔用undo大的sql語句OracleSQL
- Oracle常用效能監控語句解析Oracle
- MySQL檢視建表語句MySql
- oracle 檢視死鎖語句Oracle
- 檢視低效的SQL語句SQL
- 用LinqPad檢視Nhibernate生成的sql語句SQL
- 監聽ORM背後的sql語句。ORMSQL
- Oracle 資料庫監控SQL語句Oracle資料庫SQL
- C語言goto語句以及用goto語句構成迴圈C語言Go
- Java 可以採用什麼語句跳出迴圈語句Java
- 實用的SQL語句~!SQL
- 用動態SQL語句SQL
- Oracle日常效能檢視常用語句Oracle
- 指令碼:監控當前活動的語句指令碼
- 監控oracle的觸發器語句(轉)Oracle觸發器
- flask之控制語句 if 語句與for語句Flask
- sql 語句網路除錯和 sql 語句低層傳輸檢視SQL除錯
- oracle之 v$sql_monitor 監視正在執行的SQL語句的統計資訊OracleSQL
- 用EXPLAIN PLAN 分析SQL語句AISQL
- 啟用日誌傳送 (Transact-SQL)SQL
- 檢視 Laravel 查詢資料語句Laravel
- oracle檢視建立物件的DDL語句Oracle物件
- 檢視語句執行的時間
- Oracle-監控sql語句的過載率OracleSQL
- 監控使用高cpu的sql語句指令碼SQL指令碼
- 效能監控方面的一些SQL語句SQL
- sybase空間監控和死鎖檢測語句
- 【kingsql分享】檢視metadata的語句SQL
- SQL聯合語句的視覺解釋SQL視覺
- 檢視mysql正在執行的SQL語句MySql
- SQL語句大全—檢視錶空間(二)SQL
- SQL語句大全—檢視錶空間(一)SQL
- RAISERROR (Transact-SQL)AIErrorSQL
- if語句
- sqlserver 檢視和sql語句的效率對比SQLServer
- 物化檢視的CONSIDER FRESH語句(三)IDE
- 物化檢視的CONSIDER FRESH語句(二)IDE
- 物化檢視的CONSIDER FRESH語句(一)IDE