sqlserver 巡檢指令碼
--1.檢視資料庫版本資訊
select @@version
--2.檢視所有資料庫名稱及大小
exec sp_helpdb
--3.檢視資料庫所在機器的作業系統引數
exec master..xp_msver
--4.檢視資料庫啟動的引數
exec sp_configure
--5.檢視資料庫啟動時間
select convert(varchar(30),login_time,120)
from master..sysprocesses where spid=1
--6.檢視資料庫伺服器名
select 'Server Name:'+ltrim(@@servername)
--7.檢視資料庫例項名
select 'Instance:'+ltrim(@@servicename)
--8.資料庫的磁碟空間呢使用資訊
exec sp_spaceused
--9.日誌檔案大小及使用情況
dbcc sqlperf(logspace)
--10.表的磁碟空間使用資訊
exec sp_spaceused 'tablename'
--11.獲取磁碟讀寫情況
select
@@total_read [讀取磁碟次數],
@@total_write [寫入磁碟次數],
@@total_errors [磁碟寫入錯誤數],
getdate() [當前時間]
--12.獲取I/O工作情況
select @@io_busy [自上次啟動的I/O操作毫秒數],
@@timeticks [每個時鐘週期對應的微秒數],
@@io_busy*@@timeticks [I/O操作毫秒數],
getdate() [當前時間]
--13.檢視CPU活動及工作情況
select
@@cpu_busy [自上次啟動CPU的工作時間毫秒數],
@@timeticks [每個時鐘週期對應的微秒數],
@@cpu_busy*cast(@@timeticks as float)/1000 [CPU工作時間(秒)],
@@idle*cast(@@timeticks as float)/1000 [CPU空閒時間(秒)],
getdate() [當前時間]
--14.檢查鎖與等待
exec sp_lock
--15.檢測死鎖和阻塞
declare @spid int,@bl int,
@intTransactionCountOnEntry int,
@intRowcount int,
@intCountProperties int,
@intCounter int
create table #tmp_lock_who (
id int identity(1,1),
spid smallint,
bl smallint)
IF @@ERROR<>0 print @@ERROR
insert into #tmp_lock_who(spid,bl) select 0 ,blocked
from (select * from sysprocesses where blocked>0 ) a
where not exists(select * from (select * from sysprocesses
where blocked>0 ) b
where a.blocked=spid)
union select spid,blocked from sysprocesses where blocked>0
IF @@ERROR<>0 print @@ERROR
-- 找到臨時表的記錄數
select @intCountProperties = Count(*),@intCounter = 1
from #tmp_lock_who
IF @@ERROR<>0 print @@ERROR
if @intCountProperties=0
select '現在沒有阻塞和死鎖資訊' as message
-- 迴圈開始
while @intCounter <= @intCountProperties
begin
-- 取第一條記錄
select @spid = spid,@bl = bl
from #tmp_lock_who where Id = @intCounter
begin
if @spid =0
select '引起資料庫死鎖的是: '+ CAST(@bl AS VARCHAR(10))
+ '程式號,其執行的SQL語法如下'
else
select '程式號SPID:'+ CAST(@spid AS VARCHAR(10))+ '被'
+ '程式號SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其當前程式執行的SQL語法如下'
DBCC INPUTBUFFER (@bl )
end
-- 迴圈指標下移
set @intCounter = @intCounter + 1
end
/
--16.使用者和程式資訊
exec sp_who
exec sp_who2
--17.活動使用者和程式的資訊
exec sp_who 'active'
--19.檢視所有資料庫使用者登入資訊
exec sp_helplogins
--20.檢視所有資料庫使用者所屬的角色資訊
exec sp_helpsrvrolemember
--21.檢視連結伺服器
exec sp_helplinkedsrvlogin
--22.檢視遠端資料庫使用者登入資訊
exec sp_helpremotelogin
--23.獲取網路資料包統計資訊
select
@@pack_received [輸入資料包數量],
@@pack_sent [輸出資料包數量],
@@packet_errors [錯誤包數量],
getdate() [當前時間]
--24.檢查資料庫中的所有物件的分配和機構完整性是否存在錯誤
dbcc checkdb
--25.查詢檔案組和檔案
select
df.[name],df.physical_name,df.[size],df.growth,
f.[name][filegroup],f.is_default
from sys.database_files df join sys.filegroups f
on df.data_space_id = f.data_space_id
--26.檢視資料庫中所有表的條數
select b.name as tablename ,
a.rowcnt as datacount
from sysindexes a ,
sysobjects b
where a.id = b.id
and a.indid < 2
and objectproperty(b.id, 'IsMSShipped') = 0
--27.得到最耗時的前10條T-SQL語句
;with maco as
(
select top 10
plan_handle,
sum(total_worker_time) as total_worker_time ,
sum(execution_count) as execution_count ,
count(1) as sql_count
from sys.dm_exec_query_stats group by plan_handle
order by sum(total_worker_time) desc
)
select t.text ,
a.total_worker_time ,
a.execution_count ,
a.sql_count
from maco a
cross apply sys.dm_exec_sql_text(plan_handle) t
--28. 檢視SQL Server的實際記憶體佔用
select * from sysperfinfo where counter_name like '%Memory%'
--29.顯示所有資料庫的日誌空間資訊
dbcc sqlperf(logspace)
--30.收縮資料庫
dbcc shrinkdatabase(databaseName)
select @@version
--2.檢視所有資料庫名稱及大小
exec sp_helpdb
--3.檢視資料庫所在機器的作業系統引數
exec master..xp_msver
--4.檢視資料庫啟動的引數
exec sp_configure
--5.檢視資料庫啟動時間
select convert(varchar(30),login_time,120)
from master..sysprocesses where spid=1
--6.檢視資料庫伺服器名
select 'Server Name:'+ltrim(@@servername)
--7.檢視資料庫例項名
select 'Instance:'+ltrim(@@servicename)
--8.資料庫的磁碟空間呢使用資訊
exec sp_spaceused
--9.日誌檔案大小及使用情況
dbcc sqlperf(logspace)
--10.表的磁碟空間使用資訊
exec sp_spaceused 'tablename'
--11.獲取磁碟讀寫情況
select
@@total_read [讀取磁碟次數],
@@total_write [寫入磁碟次數],
@@total_errors [磁碟寫入錯誤數],
getdate() [當前時間]
--12.獲取I/O工作情況
select @@io_busy [自上次啟動的I/O操作毫秒數],
@@timeticks [每個時鐘週期對應的微秒數],
@@io_busy*@@timeticks [I/O操作毫秒數],
getdate() [當前時間]
--13.檢視CPU活動及工作情況
select
@@cpu_busy [自上次啟動CPU的工作時間毫秒數],
@@timeticks [每個時鐘週期對應的微秒數],
@@cpu_busy*cast(@@timeticks as float)/1000 [CPU工作時間(秒)],
@@idle*cast(@@timeticks as float)/1000 [CPU空閒時間(秒)],
getdate() [當前時間]
--14.檢查鎖與等待
exec sp_lock
--15.檢測死鎖和阻塞
declare @spid int,@bl int,
@intTransactionCountOnEntry int,
@intRowcount int,
@intCountProperties int,
@intCounter int
create table #tmp_lock_who (
id int identity(1,1),
spid smallint,
bl smallint)
IF @@ERROR<>0 print @@ERROR
insert into #tmp_lock_who(spid,bl) select 0 ,blocked
from (select * from sysprocesses where blocked>0 ) a
where not exists(select * from (select * from sysprocesses
where blocked>0 ) b
where a.blocked=spid)
union select spid,blocked from sysprocesses where blocked>0
IF @@ERROR<>0 print @@ERROR
-- 找到臨時表的記錄數
select @intCountProperties = Count(*),@intCounter = 1
from #tmp_lock_who
IF @@ERROR<>0 print @@ERROR
if @intCountProperties=0
select '現在沒有阻塞和死鎖資訊' as message
-- 迴圈開始
while @intCounter <= @intCountProperties
begin
-- 取第一條記錄
select @spid = spid,@bl = bl
from #tmp_lock_who where Id = @intCounter
begin
if @spid =0
select '引起資料庫死鎖的是: '+ CAST(@bl AS VARCHAR(10))
+ '程式號,其執行的SQL語法如下'
else
select '程式號SPID:'+ CAST(@spid AS VARCHAR(10))+ '被'
+ '程式號SPID:'+ CAST(@bl AS VARCHAR(10)) +'阻塞,其當前程式執行的SQL語法如下'
DBCC INPUTBUFFER (@bl )
end
-- 迴圈指標下移
set @intCounter = @intCounter + 1
end
/
--16.使用者和程式資訊
exec sp_who
exec sp_who2
--17.活動使用者和程式的資訊
exec sp_who 'active'
--19.檢視所有資料庫使用者登入資訊
exec sp_helplogins
--20.檢視所有資料庫使用者所屬的角色資訊
exec sp_helpsrvrolemember
--21.檢視連結伺服器
exec sp_helplinkedsrvlogin
--22.檢視遠端資料庫使用者登入資訊
exec sp_helpremotelogin
--23.獲取網路資料包統計資訊
select
@@pack_received [輸入資料包數量],
@@pack_sent [輸出資料包數量],
@@packet_errors [錯誤包數量],
getdate() [當前時間]
--24.檢查資料庫中的所有物件的分配和機構完整性是否存在錯誤
dbcc checkdb
--25.查詢檔案組和檔案
select
df.[name],df.physical_name,df.[size],df.growth,
f.[name][filegroup],f.is_default
from sys.database_files df join sys.filegroups f
on df.data_space_id = f.data_space_id
--26.檢視資料庫中所有表的條數
select b.name as tablename ,
a.rowcnt as datacount
from sysindexes a ,
sysobjects b
where a.id = b.id
and a.indid < 2
and objectproperty(b.id, 'IsMSShipped') = 0
--27.得到最耗時的前10條T-SQL語句
;with maco as
(
select top 10
plan_handle,
sum(total_worker_time) as total_worker_time ,
sum(execution_count) as execution_count ,
count(1) as sql_count
from sys.dm_exec_query_stats group by plan_handle
order by sum(total_worker_time) desc
)
select t.text ,
a.total_worker_time ,
a.execution_count ,
a.sql_count
from maco a
cross apply sys.dm_exec_sql_text(plan_handle) t
--28. 檢視SQL Server的實際記憶體佔用
select * from sysperfinfo where counter_name like '%Memory%'
--29.顯示所有資料庫的日誌空間資訊
dbcc sqlperf(logspace)
--30.收縮資料庫
dbcc shrinkdatabase(databaseName)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29371470/viewspace-1175013/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- dba巡檢指令碼指令碼
- mysql巡檢指令碼MySql指令碼
- SQL SERVER巡檢指令碼SQLServer指令碼
- shell指令碼企業巡檢指令碼
- mysql 伺服器巡檢指令碼MySql伺服器指令碼
- Oracle運維指令碼-巡檢(RAC版)Oracle運維指令碼
- Linux基礎服務巡檢指令碼模板Linux指令碼
- Oracle運維指令碼-巡檢(單機版)Oracle運維指令碼
- 【SCRIPT】Oracle日常巡檢指令碼通用版Oracle指令碼
- SharePlex 基於Solaris 10 Linux自動巡檢指令碼Linux指令碼
- Oracle運維指令碼-巡檢(RAC版本)-V1.1Oracle運維指令碼
- SQLServer 常用指令碼SQLServer指令碼
- 【SCRIPT】Oracle12C日常巡檢指令碼通用版Oracle指令碼
- 透過 Prometheus 編寫 TiDB 巡檢指令碼(指令碼已開源,內附連結)PrometheusTiDB指令碼
- 使用Linux expect批次巡檢Linux Aix Solaris磁碟使用率指令碼LinuxAI指令碼
- SCRIPT】Oracle巡檢報告html格式樣例指令碼,帶趨勢圖OracleHTML指令碼
- Oracle 資料庫巡檢指令碼 單例項 RAC 輸出HTML格式Oracle資料庫指令碼單例HTML
- shell指令碼實現多臺伺服器自動巡檢--可參考學習指令碼伺服器
- [SQLServer]NetCore中將SQLServer資料庫備份為Sql指令碼SQLServerNetCore資料庫指令碼
- 巡檢昨天到現在asm 、系統、資料庫等錯誤日誌 shell指令碼ASM資料庫指令碼
- Sqlserver查詢alwayson同步情況指令碼(2)SQLServer指令碼
- Megacli 批次磁碟巡檢
- 小麥苗資料庫巡檢指令碼V7.0,支援Oracle、MySQL、SQL Server和PG資料庫資料庫指令碼OracleMySqlServer
- T-SQL運維指令碼——檢視SQLServer平均最耗資源時間的SQL語句SQL運維指令碼Server
- SQL事前巡檢外掛SQL
- oracle DBA 巡檢專案Oracle
- sqlserver資料庫還原儲存過程指令碼SQLServer資料庫儲存過程指令碼
- Linux系統檢查指令碼Linux指令碼
- 記憶體檢查指令碼記憶體指令碼
- MySQL資料庫健康檢查--MySQL巡檢MySql資料庫
- mssql sqlserver 使用指令碼輸出excel檔案的方法分享SQLServer指令碼Excel
- SQL Server資料庫巡檢SQLServer資料庫
- Python指令碼檢測笑臉漏洞Python指令碼
- 【SCN】Oracle檢查scn值指令碼Oracle指令碼
- MSSQL資料庫健康檢查--SQL Server巡檢SQL資料庫Server
- 檢查備份情況的指令碼指令碼
- Keepalived檢測mysql 3306心跳的指令碼MySql指令碼
- 檢視SQLSERVER主鍵列SQLServer
- sqlserver監控指令碼_發現某個等待就發出郵件SQLServer指令碼