日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sqlserver 日常检查脚本

發布時間:2025/3/21 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sqlserver 日常检查脚本 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

--sqlserver ?日常檢查腳本

print '----------------------------'

print ' 0.sqlserver all information ?'
print '----------------------------'
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '*********************************'

--Step 1: Setting NULLs and quoted identifiers to ON and checking the version of SQL Server?
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO


IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'prodver') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) ? ? ? ? ? ? ? ? ? ? ? ?
drop table prodver
create table prodver ([index] int, Name nvarchar(50),Internal_value int, Charcater_Value nvarchar(50))
insert into prodver exec xp_msver 'ProductVersion'
if (select substring(Charcater_Value,1,1)from prodver)!=8
begin

? ? ? ? ? ? ? ? ? ?
-- Step 2: This code will be used if the instance is Not SQL Server 2000?


Declare @image_path nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @startup_type int ? ? ? ? ? ? ? ? ? ? ? ?
Declare @startuptype nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @start_username nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @instance_name nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @system_instance_name nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @log_directory nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @key nvarchar(1000) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @registry_key nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @registry_key1 nvarchar(300) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @registry_key2 nvarchar(300) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @IpAddress nvarchar(20) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @domain nvarchar(50) ? ? ? ? ? ? ? ? ? ? ? ?
Declare @cluster int ? ? ? ? ? ? ? ? ? ? ? ?
Declare @instance_name1 nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
-- Step 3: Reading registry keys for IP,Binaries,Startup type ,startup username, errorlogs location and domain.
SET @instance_name = coalesce(convert(nvarchar(100), serverproperty('InstanceName')),'MSSQLSERVER'); ? ? ? ? ? ? ? ? ? ? ? ?
If @instance_name!='MSSQLSERVER' ? ? ? ? ? ? ? ? ? ? ? ?
Set @instance_name=@instance_name ? ? ? ? ? ? ? ? ? ? ??

? ? Set @instance_name1= coalesce(convert(nvarchar(100), serverproperty('InstanceName')),'MSSQLSERVER'); ? ? ? ? ? ? ? ? ? ? ? ?
If @instance_name1!='MSSQLSERVER' ? ? ? ? ? ? ? ? ? ? ? ?
Set @instance_name1='MSSQL$'+@instance_name1 ? ? ? ? ? ? ? ? ? ? ? ?
EXEC master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL', @instance_name, @system_instance_name output; ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ??
Set @key=N'SYSTEM\CurrentControlSet\Services\' +@instance_name1; ? ? ? ? ? ? ? ? ? ? ? ?
SET @registry_key = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\MSSQLServer\Parameters'; ? ? ? ? ? ? ? ? ? ? ? ?
If @registry_key is NULL ? ? ? ? ? ? ? ? ? ? ? ?
set @instance_name=coalesce(convert(nvarchar(100), serverproperty('InstanceName')),'MSSQLSERVER'); ? ? ? ? ? ? ? ? ? ? ? ?
EXEC master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\Microsoft SQL Server\Instance Names\SQL', @instance_name, @system_instance_name output; ? ? ? ? ? ? ? ? ? ? ? ?


SET @registry_key = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\MSSQLServer\Parameters'; ? ? ? ? ? ? ? ? ? ? ? ?
SET @registry_key1 = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\MSSQLServer\supersocketnetlib\TCP\IP1'; ? ? ? ? ? ? ? ? ? ? ? ?
SET @registry_key2 = N'SYSTEM\ControlSet001\Services\Tcpip\Parameters\'; ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ??
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@key,@value_name='ImagePath',@value=@image_path OUTPUT ? ? ? ? ? ? ? ? ? ? ? ?
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@key,@value_name='Start',@value=@startup_type OUTPUT ? ? ? ? ? ? ? ? ? ? ? ?
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@key,@value_name='ObjectName',@value=@start_username OUTPUT ? ? ? ? ? ? ? ? ? ? ? ?
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key,@value_name='SQLArg1',@value=@log_directory OUTPUT ? ? ? ? ? ? ? ? ? ? ? ?
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key1,@value_name='IpAddress',@value=@IpAddress OUTPUT ? ? ? ? ? ? ? ? ? ? ? ?
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key2,@value_name='Domain',@value=@domain OUTPUT ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ??
Set @startuptype= (select 'Start Up Mode' = ? ? ? ? ? ? ? ? ? ? ? ?
CASE ? ? ? ? ? ? ? ? ? ? ? ?
WHEN @startup_type=2 then 'AUTOMATIC' ? ? ? ? ? ? ? ? ? ? ? ?
WHEN @startup_type=3 then 'MANUAL' ? ? ? ? ? ? ? ? ? ? ? ?
WHEN @startup_type=4 then 'Disabled' ? ? ? ? ? ? ? ? ? ? ? ?
END) ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ??
--Step 4: Getting the cluster node names if the server is on cluster .else this value will be NULL.


declare @Out nvarchar(400) ? ? ? ? ? ? ? ? ? ? ? ?
SELECT @Out = COALESCE(@Out+'' ,'') + Nodename ? ? ? ? ? ? ? ? ? ? ? ?
from sys.dm_os_cluster_nodes ? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ??
-- Step 5: printing Server details?
? ? ? ? ? ? ? ? ? ? ? ??
SELECT ? ? ? ? ? ? ? ? ? ? ??
@domain as 'Domain', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('ComputerNamePhysicalNetBIOS') as 'MachineName', ? ? ? ? ? ? ? ? ? ? ?
CPU_COUNT as 'CPUCount',
(physical_memory_in_bytes/1048576) as 'PhysicalMemoryMB', ? ? ? ? ? ? ? ? ? ? ?
@Ipaddress as 'IP_Address', ? ? ? ? ? ? ? ? ? ? ?
@instance_name1 as 'InstanceName',
@image_path as 'BinariesPath', ? ? ? ? ? ? ? ? ? ? ?
@log_directory as 'ErrorLogsLocation', ? ? ? ? ? ? ? ? ? ? ?
@start_username as 'StartupUser', ? ? ? ? ? ? ? ? ? ? ?
@Startuptype as 'StartupType', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('Productlevel') as 'ServicePack', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('edition') as 'Edition', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('productversion') as 'Version', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('collation') as 'Collation', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('Isclustered') as 'ISClustered', ? ? ? ? ? ? ? ? ? ? ?
@out as 'ClusterNodes', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('IsFullTextInstalled') as 'ISFullText' ? ? ? ? ? ? ? ? ? ? ??
From sys.dm_os_sys_info ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ??


-- Step 6: Printing database details?

SELECT ? ? ? ? ? ? ? ? ? ? ??
serverproperty ('ComputerNamePhysicalNetBIOS') as 'Machine' ? ? ? ? ? ? ? ? ? ? ?
,@instance_name1 as InstanceName, ? ? ? ? ? ? ? ? ? ? ?
(SELECT 'file_type' = ? ? ? ? ? ? ? ? ? ? ?
CASE ? ? ? ? ? ? ? ? ? ? ?
WHEN s.groupid <> 0 THEN 'data' ? ? ? ? ? ? ? ? ? ? ?
WHEN s.groupid = 0 THEN 'log' ? ? ? ? ? ? ? ? ? ? ?
END) AS 'fileType' ? ? ? ? ? ? ? ? ? ? ?
, d.dbid as 'DBID' ? ? ? ? ? ? ? ? ? ? ?
, d.name AS 'DBName' ? ? ? ? ? ? ? ? ? ? ?
, s.name AS 'LogicalFileName' ? ? ? ? ? ? ? ? ? ? ?
, s.filename AS 'PhysicalFileName' ? ? ? ? ? ? ? ? ? ? ?
?, (s.size * 8 / 1024) AS 'FileSizeMB' -- file size in MB ? ? ? ? ? ? ? ? ? ? ?
?, d.cmptlevel as 'CompatibilityLevel' ? ? ? ? ? ? ? ? ? ? ?
?, DATABASEPROPERTYEX (d.name,'Recovery') as 'RecoveryModel' ? ? ? ? ? ? ? ? ? ? ?
?, DATABASEPROPERTYEX (d.name,'Status') as 'DatabaseStatus' , ? ? ? ? ? ? ? ? ? ??
?--, d.is_published as 'Publisher' ? ? ? ? ? ? ? ? ? ? ?
?--, d.is_subscribed as 'Subscriber' ? ? ? ? ? ? ? ? ? ? ?
?--, d.is_distributor as 'Distributor'?
?(SELECT 'is_replication' = ? ? ? ? ? ? ? ? ? ? ?
CASE ? ? ? ? ? ? ? ? ? ? ?
WHEN d.category = 1 THEN 'Published' ? ? ? ? ? ? ? ? ? ? ?
WHEN d.category = 2 THEN 'subscribed' ? ? ? ? ? ? ? ? ? ? ?
WHEN d.category = 4 THEN 'Merge published'
WHEN d.category = 8 THEN 'merge subscribed'
Else 'NO replication'
END) AS 'Is_replication' ? ? ? ? ? ? ? ? ? ? ?
?, m.mirroring_state as 'MirroringState' ? ? ? ? ? ? ? ? ? ? ?
--INTO master.[dbo].[databasedetails] ? ? ? ? ? ? ? ? ? ? ?
FROM ? ? ? ? ? ? ? ? ? ? ?
sys.sysdatabases d INNER JOIN sys.sysaltfiles s ? ? ? ? ? ? ? ? ? ? ?
ON ? ? ? ? ? ? ? ? ? ? ?
d.dbid=s.dbid ? ? ? ? ? ? ? ? ? ? ?
INNER JOIN sys.database_mirroring m ? ? ? ? ? ? ? ? ? ? ?
ON ? ? ? ? ? ? ? ? ? ? ?
d.dbid=m.database_id ? ? ? ? ? ? ? ? ? ? ?
ORDER BY ? ? ? ? ? ? ? ? ? ? ?
d.name ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ??
? ? ? ? ??
--Step 7 :printing Backup details ? ? ? ? ? ? ? ? ? ? ??

Select distinct ? ? ? ? ? ? ? ? ? ? ? ? ? ??
b.machine_name as 'ServerName', ? ? ? ? ? ? ? ? ? ? ? ?
b.server_name as 'InstanceName', ? ? ? ? ? ? ? ? ? ? ? ?
b.database_name as 'DatabaseName', ? ? ? ? ? ? ? ? ? ? ? ? ? ?
d.database_id 'DBID', ? ? ? ? ? ? ? ? ? ? ? ? ? ?
CASE b.[type] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
WHEN 'D' THEN 'Full' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
WHEN 'I' THEN 'Differential' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
WHEN 'L' THEN 'Transaction Log' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
END as 'BackupType' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
--INTO [dbo].[backupdetails] ? ? ? ? ? ? ? ? ? ? ? ?
from sys.databases d inner join msdb.dbo.backupset b ? ? ? ? ? ? ? ? ? ? ? ? ? ?
On b.database_name =d.name ? ? ? ? ? ? ? ? ? ? ? ?

End
else

begin

--Step 8: If the instance is 2000 this code will be used.

declare @registry_key4 nvarchar(100) ? ? ? ? ? ? ? ? ? ? ? ?
declare @Host_Name varchar(100)
declare @CPU varchar(3)
declare @nodes nvarchar(400)
set @nodes =null /* We are not able to trap the node names for SQL Server 2000 so far*/
declare @mirroring varchar(15)
set @mirroring ='NOT APPLICABLE' /*Mirroring does not exist in SQL Server 2000*/
Declare @reg_node1 varchar(100)
Declare @reg_node2 varchar(100)
Declare @reg_node3 varchar(100)
Declare @reg_node4 varchar(100)

SET @reg_node1 = N'Cluster\Nodes\1'
SET @reg_node2 = N'Cluster\Nodes\2'
SET @reg_node3 = N'Cluster\Nodes\3'
SET @reg_node4 = N'Cluster\Nodes\4'

Declare @image_path1 varchar(100)
Declare @image_path2 varchar(100)
Declare @image_path3 varchar(100)
Declare @image_path4 varchar(100)

set @image_path1=null
set @image_path2=null
set @image_path3=null
set @image_path4=null


Exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@reg_node1, @value_name='NodeName',@value=@image_path1 OUTPUT
Exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@reg_node2, @value_name='NodeName',@value=@image_path2 OUTPUT
Exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@reg_node3, @value_name='NodeName',@value=@image_path3 OUTPUT
Exec master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@reg_node4, @value_name='NodeName',@value=@image_path4 OUTPUT

? ? IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'nodes') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) ? ? ? ? ? ? ? ? ? ? ? ?
drop table nodes
Create table nodes (name varchar (20))
insert into nodes values (@image_path1)
insert into nodes values (@image_path2)
insert into nodes values (@image_path3)
insert into nodes values (@image_path4)
--declare @Out nvarchar(400) ? ? ? ? ? ? ? ? ? ? ? ?
--declare @value nvarchar (20)
SELECT @Out = COALESCE(@Out+'/' ,'') + name from nodes where name is not null

-- Step 9: Reading registry keys for Number of CPUs,Binaries,Startup type ,startup username, errorlogs location and domain.

SET @instance_name = coalesce(convert(nvarchar(100), serverproperty('InstanceName')),'MSSQLSERVER');
IF @instance_name!='MSSQLSERVER'


BEGIN
set @system_instance_name=@instance_name
set @instance_name='MSSQL$'+@instance_name


SET @key=N'SYSTEM\CurrentControlSet\Services\' +@instance_name;
SET @registry_key = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\MSSQLServer\Parameters';
SET @registry_key1 = N'Software\Microsoft\Microsoft SQL Server\' + @system_instance_name + '\Setup';
SET @registry_key2 = N'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\';
SET @registry_key4 = N'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'



EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key1,@value_name='SQLPath',@value=@image_path OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@key,@value_name='Start',@value=@startup_type OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@key,@value_name='ObjectName',@value=@start_username OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key,@value_name='SQLArg1',@value=@log_directory OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key2,@value_name='Domain',@value=@domain OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key4,@value_name='NUMBER_OF_PROCESSORS',@value=@CPU OUTPUT ? ? ? ? ? ? ? ? ? ? ? ?

END

IF @instance_name='MSSQLSERVER'
BEGIN
SET @key=N'SYSTEM\CurrentControlSet\Services\' +@instance_name;
SET @registry_key = N'Software\Microsoft\MSSQLSERVER\MSSQLServer\Parameters';
SET @registry_key1 = N'Software\Microsoft\MSSQLSERVER\Setup';
SET @registry_key2 = N'SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\';
SET @registry_key4 = N'SYSTEM\CurrentControlSet\Control\Session Manager\Environment'

EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key1,@value_name='SQLPath',@value=@image_path OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@key,@value_name='Start',@value=@startup_type OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@key,@value_name='ObjectName',@value=@start_username OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key,@value_name='SQLArg1',@value=@log_directory OUTPUT
--EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key1,@value_name='IpAddress',@value=@IpAddress OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key2,@value_name='Domain',@value=@domain OUTPUT
EXEC master.dbo.xp_regread 'HKEY_LOCAL_MACHINE',@registry_key4,@value_name='NUMBER_OF_PROCESSORS',@value=@CPU OUTPUT ? ? ? ? ? ? ? ? ? ? ? ?


END
set @startuptype= (select 'Start Up Mode' =
CASE
WHEN @startup_type=2 then 'AUTOMATIC'
WHEN @startup_type=3 then 'MANUAL'
WHEN @startup_type=4 then 'Disabled'
END)


--Step 10 : Using ipconfig and xp_msver to get physical memory and IP


IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'tmp') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) ? ? ? ? ? ? ? ? ? ? ?
DROP TABLE tmp
create table tmp (server varchar(100)default cast( serverproperty ('Machinename') as varchar),[index] int, name sysname,internal_value int,character_value varchar(30))
insert into tmp([index],name,internal_value,character_value) exec xp_msver PhysicalMemory

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'ipadd') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) ? ? ? ? ? ? ? ? ? ? ?
drop table ipadd
create table ipadd (server varchar(100)default cast( serverproperty ('Machinename') as varchar),IP varchar (100))
insert into ipadd (IP)exec xp_cmdshell 'ipconfig'
delete from ipadd where ip not like '%IP Address.%' or IP is null




-- Step 11 : Getting the Server details?


SELECT ?top 1 ? ? ? ? ? ? ?
@domain as 'Domain', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('Machinename') as 'MachineName', ? ? ? ? ? ? ? ? ? ? ?
@CPU as 'CPUCount',
cast (t.internal_value as bigint) as PhysicalMemoryMB,
cast(substring ( I.IP , 44,41) as nvarchar(20))as IP_Address,
serverproperty('Instancename') as 'InstanceName', ? ? ? ? ? ? ? ? ? ? ?
@image_path as 'BinariesPath', ? ? ? ? ? ? ? ? ? ? ?
@log_directory as 'ErrorLogsLocation', ? ? ? ? ? ? ? ? ? ? ?
@start_username as 'StartupUser', ? ? ? ? ? ? ? ? ? ? ?
@Startuptype as 'StartupType', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('Productlevel') as 'ServicePack', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('edition') as 'Edition', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('productversion') as 'Version', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('collation') as 'Collation', ? ? ? ? ? ? ? ? ? ? ?
serverproperty('Isclustered') as 'ISClustered', ? ? ? ? ? ? ? ? ? ? ?
@Out as 'ClustreNodes',
serverproperty('IsFullTextInstalled') as 'ISFullText' ? ? ? ? ? ? ? ? ? ? ??
From tmp t inner join IPAdd I
on t.server = I.server


--Step 12 : Getting the instance details?


SELECT ? ? ? ? ? ? ? ? ? ? ??
serverproperty ('Machinename') as 'Machine', ? ? ? ? ? ? ? ? ? ? ?
serverproperty ('Instancename') as 'InstanceName', ? ? ? ? ? ? ? ? ? ? ?
(SELECT 'file_type' = ? ? ? ? ? ? ? ? ? ? ?
CASE ? ? ? ? ? ? ? ? ? ? ?
WHEN s.groupid <> 0 THEN 'data' ? ? ? ? ? ? ? ? ? ? ?
WHEN s.groupid = 0 THEN 'log' ? ? ? ? ? ? ? ? ? ? ?
END) AS 'fileType' ? ? ? ? ? ? ? ? ? ? ?
, d.dbid as 'DBID' ? ? ? ? ? ? ? ? ? ? ?
, d.name AS 'DBName' ? ? ? ? ? ? ? ? ? ? ?
, s.name AS 'LogicalFileName' ? ? ? ? ? ? ? ? ? ? ?
, s.filename AS 'PhysicalFileName' ? ? ? ? ? ? ? ? ? ? ?
, (s.size * 8 / 1024) AS 'FileSizeMB' -- file size in MB ? ? ? ? ? ? ? ? ? ? ?
,d.cmptlevel as 'CompatibilityLevel' ? ? ? ? ? ? ? ? ? ? ?
, DATABASEPROPERTYEX (d.name,'Recovery') as 'RecoveryModel' ? ? ? ? ? ? ? ? ? ? ?
, DATABASEPROPERTYEX (d.name,'Status') as 'DatabaseStatus' , ? ? ? ? ? ? ? ? ? ??
(SELECT 'is_replication' = ? ? ? ? ? ? ? ? ? ? ?
CASE ? ? ? ? ? ? ? ? ? ? ?
WHEN d.category = 1 THEN 'Published' ? ? ? ? ? ? ? ? ? ? ?
WHEN d.category = 2 THEN 'subscribed' ? ? ? ? ? ? ? ? ? ? ?
WHEN d.category = 4 THEN 'Merge published'
WHEN d.category = 8 THEN 'merge subscribed'
Else 'NO replication'
END) AS 'Is_replication',
@Mirroring as 'MirroringState'
FROM ? ? ? ? ? ? ? ? ? ? ?
sysdatabases d INNER JOIN sysaltfiles s ? ? ? ? ? ? ? ? ? ? ?
ON ? ? ? ? ? ? ? ? ? ? ?
d.dbid=s.dbid ? ? ? ? ? ? ? ? ? ? ?
ORDER BY ? ? ? ? ? ? ? ? ? ? ?
d.name ? ? ? ? ? ? ? ? ? ? ?


--Step 13 : Getting backup details?


Select distinct ? ? ? ? ? ? ? ? ? ? ? ? ? ??
b.machine_name as 'ServerName', ? ? ? ? ? ? ? ? ? ? ? ?
b.server_name as 'InstanceName', ? ? ? ? ? ? ? ? ? ? ? ?
b.database_name as 'DatabaseName', ? ? ? ? ? ? ? ? ? ? ? ? ? ?
d.dbid 'DBID', ? ? ? ? ? ? ? ? ? ? ? ? ? ?
CASE b.[type] ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
WHEN 'D' THEN 'Full' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
WHEN 'I' THEN 'Differential' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
WHEN 'L' THEN 'Transaction Log' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
END as 'BackupType' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
from sysdatabases d inner join msdb.dbo.backupset b ? ? ? ? ? ? ? ? ? ? ? ? ? ?
On b.database_name =d.name ??


--Step 14: Dropping the table we created for IP and Physical memory


Drop Table TMP
Drop Table IPADD
drop table Nodes
end
go


--Step 15 : Setting Nulls and Quoted identifier back to Off?

SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO


print '*********************************'
print ''
print ''
print ''
print ''


print '----------------------------'
print ' 1.sqlserver all information ?'
print '----------------------------'
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '*********************************'
use master
go
print 'ths information about sqlserver '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?'
print @@version
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
select cast(serverproperty('productversion') as varchar(30)) as 產品版本號,
cast(serverproperty('productlevel') as varchar(30)) as sp_level,
cast(serverproperty('edition') as varchar(30)) as 版本
go
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '


print 'SQLSERVER max user connect ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print @@max_connections
go
print '*********************************'


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '2.查看服務器有哪些數據庫'
print '----------------------------'
print '*********************************'
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? '
SELECT DatabaseName,DataSize,LogSize,DataSize+LogSize AS TotalSize, Collation, RecoveryType,AutoClose,AutoShrink
FROM?
(SELECT DBID,
CASE Sum(size*8/1024)?
WHEN 0 THEN 1?
ELSE Sum(size*8/1024)?
END AS DataSize
FROM master..sysaltfiles
WHERE GroupID <> 0
GROUP BY DBID) q1
INNER JOIN
(SELECT DBID,
CASE Sum(size*8/1024)?
WHEN 0 THEN 1?
ELSE Sum(size*8/1024)
END AS LogSize
FROM master..sysaltfiles
WHERE GroupID = 0
GROUP BY DBID) q2?
ON q1.DBID = q2.DBID
INNER JOIN
(SELECT DBID, [name] AS DatabaseName,
CONVERT(varchar(100),DATABASEPROPERTYEX([Name], 'Collation')) AS Collation,
CONVERT(varchar(100),DATABASEPROPERTYEX([Name], 'Recovery')) AS RecoveryType,
CASE CONVERT(varchar(10),DATABASEPROPERTYEX([Name], 'IsAutoClose'))
WHEN 0 THEN '-'
WHEN 1 THEN 'Yes'
END ?AS AutoClose,
CASE CONVERT(varchar(10),DATABASEPROPERTYEX([Name], 'IsAutoShrink'))
WHEN 0 THEN '-'
WHEN 1 THEN 'Yes'
END AS AutoShrink
FROM master.dbo.sysdatabases) q3
ON q1.DBID = q3.dbid
ORDER BY DatabaseName?
print '*********************************'




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '3.查看每個數據庫具體結構信息'
print'----------------------------'
print '*********************************'
print ' ? ? ? ? ? ? ? ? ? ? ? ? '
use master
go
declare @databasename varchar(50)
declare cur01 cursor for
select name from sys.databases
open cur01
fetch next from cur01 into @databasename
while @@fetch_status=0
begin
begin
select 'databasename: ?'+ @databasename
print ' ? ? ? ? ? ? ? ? ? ? '
exec sp_helpdb @databasename
end
fetch next from cur01 into @databasename;
end;
close cur01
deallocate cur01
go
print '*********************************'






print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '4.1所有數據庫的index ? ? ? ? ?'
print '----------------------------'
print '*********************************'
use master
go
BEGIN
CREATE TABLE #INDEXFRAGINFO
(
DatabaseName nvarchar(128),
DatabaseID smallint,
full_obj_name nvarchar(384),
index_id INT,?
[name] nvarchar(128),?
index_type_desc nvarchar(60),?
index_depth tinyint,
index_level tinyint,
[AVG Fragmentation] float,?
fragment_count bigint,
[Rank] bigint?
)


DECLARE @command VARCHAR(1000)?
SELECT @command = 'Use [' + '?' + '] select ' + '''' + '?' + '''' + ' AS DatabaseName,
DB_ID() AS DatabaseID,
QUOTENAME(DB_NAME(i.database_id), '+ '''' + '"' + '''' +')+ N'+ '''' + '.' + '''' +'+ QUOTENAME(OBJECT_SCHEMA_NAME(i.object_id, i.database_id), '+ '''' + '"' + '''' +')+ N'+ '''' + '.' + '''' +'+ QUOTENAME(OBJECT_NAME(i.object_id, i.database_id), '+ '''' + '"' + '''' +') as full_obj_name,?
i.index_id,
o.name,?
i.index_type_desc,?
i.index_depth,
i.index_level,
i.avg_fragmentation_in_percent as [AVG Fragmentation],?
i.fragment_count,?
i.rnk as Rank
from (
select *, DENSE_RANK() OVER(PARTITION by database_id ORDER BY avg_fragmentation_in_percent DESC) as rnk
from sys.dm_db_index_physical_stats(DB_ID(), default, default, default,'+ '''' + 'limited' + '''' +')
where avg_fragmentation_in_percent >0 AND?
INDEX_ID > 0 AND?
Page_Count > 500?
) as i
join sys.indexes o on o.object_id = i.object_id and o.index_id = i.index_id
where i.rnk <= 25
order by i.database_id, i.rnk;'


INSERT #INDEXFRAGINFO EXEC sp_MSForEachDB @command?


SELECT substring(databasename,0,30) as databasename ,ltrim(databaseID) as databaseID,substring(full_obj_name,0,50) as full_obj_name ,
ltrim(index_id) as index_id, [name],?
index_type_desc, ltrim(index_depth) as index_depth, ltrim(index_level) as index_level, ltrim([AVG Fragmentation]) as [AVG Fragmentation] ,
?ltrim(fragment_count) as fragment_count, ltrim([Rank]) as [Rank]
FROM #INDEXFRAGINFO
Where DatabaseID > 4
order by [RANK];


DROP TABLE #INDEXFRAGINFO


END
GO


print '*********************************'








print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '4.2找出很少使用的index ? ? ? ? '
print '----------------------------'
print '*********************************'




declare @dbid int
select @dbid = db_id()
select objectname=object_name(s.object_id), s.object_id
, indexname=i.name, i.index_id
, user_seeks AS 搜索次數, user_scans AS 掃描次數,?
user_lookups AS 查找次數, user_updates 更新次數
from sys.dm_db_index_usage_stats s,
sys.indexes i
where database_id = @dbid?
and objectproperty(s.object_id,'IsUserTable') = 1
and i.object_id = s.object_id
and i.index_id = s.index_id
order by (user_seeks + user_scans + user_lookups + user_updates) asc
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '4.3所有數據庫未使用的索引 ?'
print '----------------------------'
print '*********************************'


SELECT TOP 1
? ? ? ? DatabaseName = DB_NAME()
? ? ? ? ,TableName = OBJECT_NAME(s.[object_id])
? ? ? ? ,IndexName = i.name
? ? ? ? ,user_updates ? ?
? ? ? ? ,system_updates ? ?
? ? ? ? -- Useful fields below:
? ? ? ? --, *
INTO #TempUnusedIndexes
FROM ? sys.dm_db_index_usage_stats s?
INNER JOIN sys.indexes i ON ?s.[object_id] = i.[object_id]?
? ? AND s.index_id = i.index_id?
WHERE ?s.database_id = DB_ID()
? ? AND OBJECTPROPERTY(s.[object_id], 'IsMsShipped') = 0
? ? AND ? ?user_seeks = 0
? ? AND user_scans = 0?
? ? AND user_lookups = 0
? ? AND s.[object_id] = -999 ?-- Dummy value to get table structure.
;


-- Loop around all the databases on the server.
EXEC sp_MSForEachDB ? ?'USE [?];?
-- Table already exists.
INSERT INTO #TempUnusedIndexes?
SELECT TOP 10 ? ?
? ? ? ? DatabaseName = DB_NAME()
? ? ? ? ,TableName = OBJECT_NAME(s.[object_id])
? ? ? ? ,IndexName = i.name
? ? ? ? ,user_updates ? ?
? ? ? ? ,system_updates ? ?
FROM ? sys.dm_db_index_usage_stats s?
INNER JOIN sys.indexes i ON ?s.[object_id] = i.[object_id]?
? ? AND s.index_id = i.index_id?
WHERE ?s.database_id = DB_ID()
? ? AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0
? ? AND ? ?user_seeks = 0
? ? AND user_scans = 0?
? ? AND user_lookups = 0
? ? AND i.name IS NOT NULL ? ?-- Ignore HEAP indexes.
ORDER BY user_updates DESC
;
'


-- Select records.
SELECT TOP 10 * FROM #TempUnusedIndexes ORDER BY [user_updates] DESC
-- Tidy up.
DROP TABLE #TempUnusedIndexes


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '4.4所有數據庫高開銷的缺失索引 ?'
print '----------------------------'
print '*********************************'


SELECT ?TOP 10?
? ? ? ? [Total Cost] ?= ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0)?
? ? ? ? , avg_user_impact
? ? ? ? , TableName = statement
? ? ? ? , [EqualityUsage] = equality_columns?
? ? ? ? , [InequalityUsage] = inequality_columns
? ? ? ? , [Include Cloumns] = included_columns
FROM ? ? ? ?sys.dm_db_missing_index_groups g?
INNER JOIN ? ?sys.dm_db_missing_index_group_stats s?
? ? ? ?ON s.group_handle = g.index_group_handle?
INNER JOIN ? ?sys.dm_db_missing_index_details d?
? ? ? ?ON d.index_handle = g.index_handle
ORDER BY [Total Cost] DESC;


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '5.查詢數據庫IO ? ? ? ? ? ? ? ? '
print '----------------------------'
print '*********************************'
go
WITH IOFORDATABASE AS
(
SELECT
?DB_NAME(VFS.database_id) AS DatabaseName
,CASE WHEN smf.type = 1 THEN 'LOG_FILE' ELSE 'DATA_FILE' END AS DatabaseFile_Type
,SUM(VFS.num_of_bytes_written) AS IO_Write
,SUM(VFS.num_of_bytes_read) AS IO_Read
,SUM(VFS.num_of_bytes_read + VFS.num_of_bytes_written) AS Total_IO
,SUM(VFS.io_stall) AS IO_STALL
FROM sys.dm_io_virtual_file_stats(NULL, NULL) AS VFS
JOIN sys.master_files AS smf
? ON VFS.database_id = smf.database_id
?AND VFS.file_id = smf.file_id
GROUP BY?
?DB_NAME(VFS.database_id)
,smf.type
)
SELECT?
?ltrim(ROW_NUMBER() OVER(ORDER BY io_stall DESC)) AS RowNumber
,substring(DatabaseName,1,30) as DatabaseName


,DatabaseFile_Type
,ltrim(CAST(1.0 * IO_Read/ (1024 * 1024) AS DECIMAL(12, 2))) AS IO_Read_MB
,ltrim(CAST(1.0 * IO_Write/ (1024 * 1024) AS DECIMAL(12, 2))) AS IO_Write_MB
,ltrim(CAST(1. * Total_IO / (1024 * 1024) AS DECIMAL(12, 2))) AS IO_TOTAL_MB
,ltrim(CAST(IO_STALL / 1000. AS DECIMAL(12, 2))) AS IO_STALL_Seconds
,ltrim(CAST(100. * IO_STALL / SUM(IO_STALL) OVER() AS DECIMAL(10, 2))) AS IO_STALL_Pct
FROM IOFORDATABASE
ORDER BY IO_STALL_Seconds DESC;
go
print '*********************************'




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '6.查看數據庫是否有死鎖 ? ? ? ? '
print '----------------------------'
print '*********************************'
use master
go
select ltrim(request_session_id) "會話ID",
substring(resource_type,1,30) "被鎖定的資源",
resource_database_id "數據庫",
object_name(resource_associated_entity_id) "對象",
request_mode "資源模式",
request_status ?"鎖狀態"
from sys.dm_tran_locks
go
print '*********************************'




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '7.查看性能統計信息 ? ? ? ? ? ? '
print'----------------------------'
print '*********************************'
use master
go
dbcc freeproccache
go
select t.text as "執行的文本", st.total_logical_reads ?as "邏輯讀取總次數",
st.total_physical_reads ?as "物理讀取總次數",
st.total_elapsed_time/1000000 as "占用的總時間",
st.total_logical_writes ?as "邏輯寫入總次數"
from sys.dm_exec_query_stats st
cross apply sys.dm_exec_sql_text(st.sql_handle) t
go
print '*********************************'






print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '8.臨時數據庫使用情況 ? ? ? ? ? ? ?'
print '----------------------------'
print '*********************************'
use master
go
select ltrim(sum(user_object_reserved_page_count)*8) as user_objects_kb,
? ?ltrim(sum(internal_object_reserved_page_count)*8) as internal_objects_kb,
? ?ltrim(sum(version_store_reserved_page_count)*8) as version_store_kb,
? ?ltrim(sum(unallocated_extent_page_count)*8) as freespace_kb
from sys.dm_db_file_space_usage
where database_id = 2
go
print '*********************************'




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '9.查CPU瓶頸 ? ? ? ? ? ? ? ? ? ?'
print '----------------------------'
print '*********************************'
use master
go
Select ltrim(scheduler_id) as scheduler_id,
ltrim(current_tasks_count) as current_tasks_count ,
ltrim(runnable_tasks_count) as current_tasks_count
from sys.dm_os_schedulers where scheduler_id<255?
go
print '*********************************'




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '------------------------------------------'
print '10.當前被緩存的消耗CPU資源最多的批處理或者過程'
print '------------------------------------------'
print '*********************************'
use master
go
Select top 50 ltrim(sum(total_worker_time)) as total_cpu_time,
ltrim(sum(execution_count)) as total_execution_count,?
ltrim(count(*)) as number_of_statements,plan_handle?
from sys.dm_exec_query_stats qs group by?
plan_handle order by sum(total_worker_time) desc?
go
print '*********************************'




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '--------------------------------------------'
print '11.查詢前100個緩存使用率高、最消耗緩存的sql語句'
print '--------------------------------------------'
print '*********************************'
use master
go
select top 100 ltrim(usecounts) as usecounts,
objtype,
ltrim(p.size_in_bytes) as ?size_in_bytes ,
sql.text
from sys.dm_exec_cached_plans ?p
outer apply
sys.dm_exec_sql_text(p.plan_handle) sql
order by usecounts desc
go
print '*********************************'




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '---------------------------------------------------------------'
print '12.解數據庫中的緩存情況,包括被使用的次數、緩存類型、占用的內存大小'
print '---------------------------------------------------------------'
print '*********************************'
use master
go
SELECT usecounts=ltrim(usecounts), substring(cacheobjtype,1,30) as cacheobjtype, objtype,ltrim(size_in_bytes) as size_in_bytes, plan_handle
FROM sys.dm_exec_cached_plans
go
print '*********************************'






print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '----------------------------'
print '13.計劃緩存總數'
print '----------------------------'
print '*********************************'
use master
go
Select ltrim(Count(*)) CNT,
cast(sum(size_in_bytes)/1024/1024 as varchar(100))+' MB' TotalSize
From sys.dm_exec_cached_plans
go
print '*********************************'




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '--------------------------------------'
print '14.檢查SQL Server的執行緩存和數據緩存占用'
print '--------------------------------------'
print '*********************************'
use master
go
dbcc memorystatus?
go
print '*********************************'






print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------'
print '15.所有數據庫備份情況'
print '-------------------------------------'
print '*********************************'
-- sql server 2000/2005 version


use master
go
set nocount on
go
declare @counter smallint
declare @dbname varchar(100)
declare @db_bkpdate varchar(100)
declare @status varchar(20)
declare @svr_name varchar(100)
declare @media_set_id varchar(20)
declare @filepath varchar(1000)
declare @filestatus int
declare @fileavailable varchar(20)
declare @backupsize float


select @counter=max(dbid) from master..sysdatabases
create table #backup_details?
(
servername varchar(100),
databasename varchar(100),
bkpdate varchar(20) null,
backupsize_in_mb varchar(20),
status varchar(20),
filepath varchar(1000),
fileavailable varchar(200)
)
select @svr_name = cast(serverproperty('servername')as sysname)
while @counter > 0
begin
/* need to re-initialize all variables*/
select @dbname = null , @db_bkpdate = null ,
@media_set_id = null , @backupsize = null ,
@filepath = null , @filestatus = null ,?
@fileavailable = null , @status = null , @backupsize = null


select @dbname = name from master..sysdatabases where dbid = @counter
select @db_bkpdate = max(backup_start_date) from msdb..backupset where database_name = @dbname and type='d'
select @media_set_id = media_set_id from msdb..backupset where backup_start_date = ( select max(backup_start_date) from msdb..backupset where database_name = @dbname and type='d')
select @backupsize = backup_size from msdb..backupset where backup_start_date = ( select max(backup_start_date) from msdb..backupset where database_name = @dbname and type='d')
select @filepath = physical_device_name from msdb..backupmediafamily where media_set_id = @media_set_id
exec master..xp_fileexist @filepath , @filestatus out
if @filestatus = 1
set @fileavailable = 'available'
else
set @fileavailable = 'not available'
if (datediff(day,@db_bkpdate,getdate()) > 7)
set @status = 'warning'
else
set @status = 'healthy'
set @backupsize = (@backupsize/1024)/1024
insert into #backup_details select @svr_name,@dbname,@db_bkpdate,@backupsize,@status,@filepath,@fileavailable
update #backup_details
set status = 'warning' where bkpdate is null
set @counter = @counter - 1
end
select substring(servername,0,20) AS [服務器名],
substring(databasename,0,20) AS [數據庫名],?
rtrim(ltrim(bkpdate)) AS ?[備份日期],
rtrim(ltrim(backupsize_in_mb)) AS [備份大小],
rtrim(ltrim([status])) AS [備份狀態],
substring(rtrim(ltrim(filepath)),0,40) AS ?[備份文件路徑],
rtrim(fileavailable) AS ?[備份文件是否可用]
?from #backup_details where databasename not in ('tempdb','northwind','pubs')
drop table #backup_details
set nocount off
go


print '*********************************'






print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------'
print '16.監控CPU瓶頸'
print '-------------------------------------'
print '*********************************'
use master
go


print '-------------------------------------'
print '16.1當前緩存的哪些批處理或過程占用了大部分 CPU 資源'
print '-------------------------------------'
SELECT TOP 50?
? ? ? ltrim(SUM(qs.total_worker_time)) AS total_cpu_time,?
? ? ? ltrim(SUM(qs.execution_count)) AS total_execution_count,
? ? ? ltrim(COUNT(*)) AS ?number_of_statements,?
? ? ? qs.sql_handle?
FROM sys.dm_exec_query_stats AS qs
GROUP BY qs.sql_handle
ORDER BY SUM(qs.total_worker_time) DESC
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '16.2查詢顯示緩存計劃所占用的 CPU 總使用率(帶 SQL 文本)'
print '-------------------------------------------------------'
SELECT?
? ? ? total_cpu_time,?
? ? ? total_execution_count,
? ? ? number_of_statements,
? ? ? s2.text
? ? ? --(SELECT SUBSTRING(s2.text, statement_start_offset / 2, ((CASE WHEN statement_end_offset = -1 THEN (LEN(CONVERT(NVARCHAR(MAX), s2.text)) * 2) ELSE statement_end_offset END) - statement_start_offset) / 2) ) AS query_text
FROM?
? ? ? (SELECT TOP 50?
? ? ? ? ? ? SUM(qs.total_worker_time) AS total_cpu_time,?
? ? ? ? ? ? SUM(qs.execution_count) AS total_execution_count,
? ? ? ? ? ? COUNT(*) AS ?number_of_statements,?
? ? ? ? ? ? qs.sql_handle --,
? ? ? ? ? ? --MIN(statement_start_offset) AS statement_start_offset,?
? ? ? ? ? ? --MAX(statement_end_offset) AS statement_end_offset
? ? ? FROM?
? ? ? ? ? ? sys.dm_exec_query_stats AS qs
? ? ? GROUP BY qs.sql_handle
? ? ? ORDER BY SUM(qs.total_worker_time) DESC) AS stats
? ? ? CROSS APPLY sys.dm_exec_sql_text(stats.sql_handle) AS s2
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '16.3顯示 CPU 平均占用率最高的前 50 個 SQL 語句'
print '-------------------------------------------------------'


SELECT TOP 50
total_worker_time/execution_count AS [Avg CPU Time],
(SELECT SUBSTRING(text,statement_start_offset/2,(CASE WHEN statement_end_offset = -1 then LEN(CONVERT(nvarchar(max), text)) * 2 ELSE statement_end_offset end -statement_start_offset)/2) FROM sys.dm_exec_sql_text(sql_handle)) AS query_text, *
FROM sys.dm_exec_query_stats?
ORDER BY [Avg CPU Time] DESC
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '16.4找出過多編譯/重新編譯的 DMV 查詢'
print '-------------------------------------------------------'
select * from sys.dm_exec_query_optimizer_info
where?
? ? ? counter = 'optimizations'
? ? ? or counter = 'elapsed time'
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '16.5顯示已重新編譯的前 25 個存儲過程'
print '-------------------------------------------------------'
select top 25
? ? ? sql_text.text,
? ? ? sql_handle,
? ? ? plan_generation_num,
? ? ? execution_count,
? ? ? dbid,
? ? ? objectid?
from sys.dm_exec_query_stats a
? ? ? cross apply sys.dm_exec_sql_text(sql_handle) as sql_text
where plan_generation_num > 1
order by plan_generation_num desc
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '16.6哪個查詢占用了最多的 CPU 累計使用率'
print '-------------------------------------------------------'


SELECT?
? ? ltrim(highest_cpu_queries.plan_handle) as plan_handle,?
? ? ltrim(highest_cpu_queries.total_worker_time) as total_worker_time,
? ? q.dbid,
? ? ltrim(q.objectid),
? ? q.number,
? ? q.encrypted,
? ? q.[text]
from?
? ? (select top 50?
? ? ? ? qs.plan_handle,?
? ? ? ? qs.total_worker_time
? ? from?
? ? ? ? sys.dm_exec_query_stats qs
? ? order by qs.total_worker_time desc) as highest_cpu_queries
? ? cross apply sys.dm_exec_sql_text(plan_handle) as q
order by highest_cpu_queries.total_worker_time desc
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '16.7可能占用大量 CPU 使用率的運算符
print '-------------------------------------------------------'


select *
from?
? ? ? sys.dm_exec_cached_plans
? ? ? cross apply sys.dm_exec_query_plan(plan_handle)
where?
? ? ? cast(query_plan as nvarchar(max)) like '%Sort%'
? ? ? or cast(query_plan as nvarchar(max)) like '%Hash Match%'
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '17.內存瓶頸'
print '-------------------------------------------------------'
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '17.1確保已啟用 SQL Server 中的高級選項'
print '-------------------------------------------------------'
use master
go
sp_configure 'show advanced options'
go
sp_configure 'show advanced options', 1
go
reconfigure
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '17.2運行以下查詢以檢查內存相關配置選項'
print '-------------------------------------------------------'


sp_configure 'awe_enabled'
go
sp_configure 'min server memory'
go
sp_configure 'max server memory'
go
sp_configure 'min memory per query'
go
sp_configure 'query wait'
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '17.3查看 CPU、計劃程序內存和緩沖池信息'
print '-------------------------------------------------------'


select?
ltrim(cpu_count) as cpu_count,
ltrim(hyperthread_ratio) as hyperthread_ratio,
ltrim(scheduler_count) as scheduler_count,
ltrim(physical_memory_in_bytes / 1024 / 1024) as physical_memory_mb,
ltrim(virtual_memory_in_bytes / 1024 / 1024) as virtual_memory_mb,
ltrim(bpool_committed * 8 / 1024) as bpool_committed_mb,
ltrim(bpool_commit_target * 8 / 1024) as bpool_target_mb,
ltrim(bpool_visible * 8 / 1024) as bpool_visible_mb
from sys.dm_os_sys_info
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '17.4I/O 瓶頸'
print '-------------------------------------------------------'
select wait_type, ltrim(waiting_tasks_count) as waiting_tasks_count , ltrim(wait_time_ms) as wait_time_ms ,?
ltrim(signal_wait_time_ms) as signal_wait_time_ms, ltrim(wait_time_ms / waiting_tasks_count) as avgtime
from sys.dm_os_wait_stats ?
where wait_type like 'PAGEIOLATCH%' ?and waiting_tasks_count > 0
order by wait_type
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '17.5查找當前掛起的 I/O 請求'
print '-------------------------------------------------------'


print '正常情況下不返回任何值'


select?
? ? database_id,?
? ? file_id,?
? ? io_stall,
? ? io_pending_ms_ticks,
? ? scheduler_address?
from ?sys.dm_io_virtual_file_stats(NULL, NULL)t1,
? ? ? ? sys.dm_io_pending_io_requests as t2
where t1.file_handle = t2.io_handle
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '17.6查看IO相關查詢讀取次數'
print '-------------------------------------------------------'


select top 5 (total_logical_reads/execution_count) as avg_logical_reads,
? ? ? ? ? ? ? ? ? ?(total_logical_writes/execution_count) as avg_logical_writes,
? ? ? ? ? ?(total_physical_reads/execution_count) as avg_physical_reads,
? ? ? ? ? ?Execution_count, statement_start_offset, p.query_plan, q.text
from sys.dm_exec_query_stats
? ? ? cross apply sys.dm_exec_query_plan(plan_handle) p
? ? ? cross apply sys.dm_exec_sql_text(plan_handle) as q
order by (total_logical_reads + total_logical_writes)/execution_count Desc
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '17.7查找哪些批處理/請求生成的 I/O 最多'
print '-------------------------------------------------------'


select top 5?
? ? ltrim(total_logical_reads/execution_count) as avg_logical_reads,
? ? ltrim(total_logical_writes/execution_count) as avg_logical_writes,
? ? ltrim(total_physical_reads/execution_count) as avg_phys_reads,
? ? ?ltrim(Execution_count) as Execution_count,?
? ? ltrim(statement_start_offset) as stmt_start_offset,?
? ? sql_handle,?
? ? plan_handle
from sys.dm_exec_query_stats ?
order by ?(total_logical_reads + total_logical_writes) Desc
go



print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '18.阻塞'
print '-------------------------------------------------------'


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '18.1 確定阻塞的會話'
print '-------------------------------------------------------'
use master
go
select blocking_session_id, wait_duration_ms, session_id from?
sys.dm_os_waiting_tasks
where blocking_session_id is not null
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '18.2 SQL 等待分析和前 10 個等待的資源'
print '-------------------------------------------------------'
select top 10 ltrim(wait_type) as wait_type, ltrim(waiting_tasks_count) as waiting_tasks_count,
?ltrim(wait_time_ms) as ?wait_time_ms, ??
?ltrim(max_wait_time_ms) as ?max_wait_time_ms,
?ltrim(signal_wait_time_ms) as signal_wait_time_ms
from sys.dm_os_wait_stats
--where wait_type not in ('CLR_SEMAPHORE','LAZYWRITER_SLEEP','RESOURCE_QUEUE','SLEEP_TASK','SLEEP_SYSTEMTASK','WAITFOR')
order by wait_time_ms desc
go



print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '19. 查看各個數據庫性能負載'
print '-------------------------------------------------------'


SELECT
substring (a.name,0,12) as [數據庫名],
[連接數] = (SELECT COUNT(*)
FROM master..sysprocesses b
WHERE
a.dbid = b.dbid),


[阻塞進程] = (SELECT COUNT(*)
FROM master..sysprocesses b
WHERE
a.dbid = b.dbid AND
blocked <> 0),


[總內存] = ISNULL((SELECT SUM(memusage)
FROM
master..sysprocesses b
WHERE
a.dbid = b.dbid),0),


[總IO] = ISNULL((SELECT SUM(physical_io)
FROM
master..sysprocesses b
WHERE
a.dbid = b.dbid),0),


[總CPU] = ISNULL((SELECT SUM(cpu)
FROM
master..sysprocesses b
WHERE
a.dbid = b.dbid),0),


[總等待時間] = ISNULL((SELECT SUM(waittime)
FROM
master..sysprocesses b
WHERE
a.dbid = b.dbid),0),


[SELECTs] = (SELECT COUNT(*)?
FROM master..sysprocesses b
WHERE?
a.dbid = b.dbid AND
b.cmd LIKE '%SELECT%'),


[DELETEs] = (SELECT COUNT(*)?
FROM master..sysprocesses b
WHERE?
a.dbid = b.dbid AND
b.cmd LIKE '%DELETE%'),


[DBCC Commands] = ISNULL((SELECT COUNT(*)
FROM
master..sysprocesses b
WHERE
a.dbid = b.dbid and
b.cmd like '%DBCC%'),0),


[BCP Running] = ISNULL((SELECT COUNT(*)
FROM
master..sysprocesses b
WHERE
a.dbid = b.dbid and
b.cmd like '%BCP%'),0),


[Backups Running] = ISNULL((SELECT COUNT(*)
FROM
master..sysprocesses b
WHERE
a.dbid = b.dbid and
b.cmd LIKE '%BACKUP%'),0)


FROM master.dbo.sysdatabases a WITH (nolock)
WHERE?
DatabasePropertyEx(a.name,'Status') = 'ONLINE'
ORDER BY [數據庫名]
go



print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '20. 查看所有數據庫大小、恢復模式等信息'
print '-------------------------------------------------------'
SELECT substring (DatabaseName,0,12) as DatabaseName,DataSize,LogSize,DataSize+LogSize AS TotalSize, Collation, RecoveryType,AutoClose,AutoShrink
FROM?
(SELECT DBID,
CASE Sum(size*8/1024)?
WHEN 0 THEN 1?
ELSE Sum(size*8/1024)?
END AS DataSize
FROM master..sysaltfiles
WHERE GroupID <> 0
GROUP BY DBID) q1
INNER JOIN
(SELECT DBID,
CASE Sum(size*8/1024)?
WHEN 0 THEN 1?
ELSE Sum(size*8/1024)
END AS LogSize
FROM master..sysaltfiles
WHERE GroupID = 0
GROUP BY DBID) q2?
ON q1.DBID = q2.DBID
INNER JOIN
(SELECT DBID, [name] AS DatabaseName,
CONVERT(varchar(100),DATABASEPROPERTYEX([Name], 'Collation')) AS Collation,
CONVERT(varchar(100),DATABASEPROPERTYEX([Name], 'Recovery')) AS RecoveryType,
CASE CONVERT(varchar(10),DATABASEPROPERTYEX([Name], 'IsAutoClose'))
WHEN 0 THEN '-'
WHEN 1 THEN 'Yes'
END ?AS AutoClose,
CASE CONVERT(varchar(10),DATABASEPROPERTYEX([Name], 'IsAutoShrink'))
WHEN 0 THEN '-'
WHEN 1 THEN 'Yes'
END AS AutoShrink
FROM master.dbo.sysdatabases) q3
ON q1.DBID = q3.dbid
ORDER BY DatabaseName?


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '21. 查看數據庫群集信息'
print '-------------------------------------------------------'


PRINT ' **** Cluster Information ****'
PRINT ' '
PRINT ' The following is information on the cluster you are connected'
PRINT ' '
PRINT '... Name of all nodes used and are part of this failover cluster'
SELECT * FROM sys.dm_os_cluster_nodes?
PRINT ' '
PRINT '... Node which is the active '
SELECT SERVERPROPERTY('ComputerNamePhysicalNetBIOS')?
PRINT ' '
PRINT '... Drive letters that are part of the resourse group which contain the data and log files'
SELECT * FROM sys.dm_io_cluster_shared_drives
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '22. 當前數據庫服務器登錄用戶、會話連接數、認證類型'
print '-------------------------------------------------------'


SELECT '認證方式'=(
CASE?
WHEN nt_user_name IS not null THEN 'windows認證'?
ELSE 'SQL認證'?
END),
login_name AS '登錄名', ISNULL(nt_user_name,'-') AS 'Windows登錄名',
COUNT(session_id) AS '會話數'
FROM sys.dm_exec_sessions
GROUP BY login_name,nt_user_name
go




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '23. 查看執行效率低的語句'
print '-------------------------------------------------------'



SELECT creation_time ?N'語句編譯時間'
? ? ? ? ,last_execution_time ?N'上次執行時間'
? ? ? ? ,total_physical_reads N'物理讀取總次數'
? ? ? ? ,total_logical_reads/execution_count N'每次邏輯讀次數'
? ? ? ? ,total_logical_reads ?N'邏輯讀取總次數'
? ? ? ? ,total_logical_writes N'邏輯寫入總次數'
? ? ? ? ,execution_count ?N'執行次數'
? ? ? ? ,total_worker_time/1000 N'所用的CPU總時間ms'
? ? ? ? ,total_elapsed_time/1000 ?N'總花費時間ms'
? ? ? ? ,(total_elapsed_time / execution_count)/1000 ?N'平均時間ms'
? ? ? ? ,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
? ? ? ? ?((CASE statement_end_offset
? ? ? ? ? WHEN -1 THEN DATALENGTH(st.text)
? ? ? ? ? ELSE qs.statement_end_offset END
? ? ? ? ? ? - qs.statement_start_offset)/2) + 1) N'執行語句'
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st
where SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,
? ? ? ? ?((CASE statement_end_offset
? ? ? ? ? WHEN -1 THEN DATALENGTH(st.text)
? ? ? ? ? ELSE qs.statement_end_offset END
? ? ? ? ? ? - qs.statement_start_offset)/2) + 1) not like '%fetch%'
ORDER BY ?total_elapsed_time / execution_count DESC;



print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '24. 所有數據庫高開銷的缺失索引'
print '-------------------------------------------------------'


SELECT ?TOP 100?
? ? ? ? [Total Cost] ?= ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0)?
? ? ? ? , avg_user_impact
? ? ? ? , TableName = statement
? ? ? ? , [EqualityUsage] = equality_columns?
? ? ? ? , [InequalityUsage] = inequality_columns
? ? ? ? , [Include Cloumns] = included_columns
FROM ? ? ? ?sys.dm_db_missing_index_groups g?
INNER JOIN ? ?sys.dm_db_missing_index_group_stats s?
? ? ? ?ON s.group_handle = g.index_group_handle?
INNER JOIN ? ?sys.dm_db_missing_index_details d?
? ? ? ?ON d.index_handle = g.index_handle
ORDER BY [Total Cost] DESC;


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '25. 查看buffer cache命中率'
print '-------------------------------------------------------'


?SELECT ?
(CAST(SUM(CASE LTRIM(RTRIM(counter_name)) ? ?
WHEN 'Buffer cache hit ratio' ? ?
THEN CAST(cntr_value AS INTEGER) ELSE NULL END) AS FLOAT) / ??
CAST(SUM(CASE LTRIM(RTRIM(counter_name)) ? ?
WHEN 'Buffer cache hit ratio base' THEN CAST(cntr_value AS INTEGER)ELSE NULL END) AS FLOAT)) * 100 ??
AS BufferCacheHitRatio ??
FROM sys.dm_os_performance_counters ? ?
WHERE LTRIM(RTRIM([object_name])) LIKE '%:Buffer Manager' AND ? ?
?[counter_name] LIKE 'Buffer Cache Hit Ratio%' ?
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '26. 查看job執行情況'
print '-------------------------------------------------------'



SELECT 作業名 ? ? = sj.name?
? ? ? ,開始時間 = sja.start_execution_date?
? ? ? ,結束時間 ? = sja.stop_execution_date?
? ? ? ,狀態 ? ?= CASE ?
? ? ? ? ? ? ? ? ? ?WHEN ISNULL(sjh.run_status,-1) = -1 AND sja.start_execution_date IS NULL AND sja.stop_execution_date IS NULL THEN 'Idle'?
? ? ? ? ? ? ? ? ? ?WHEN ISNULL(sjh.run_status,-1) = -1 AND sja.start_execution_date IS NOT NULL AND sja.stop_execution_date IS NULL THEN 'Running'?
? ? ? ? ? ? ? ? ? ?WHEN ISNULL(sjh.run_status,-1) =0 ?THEN 'Failed'?
? ? ? ? ? ? ? ? ? ?WHEN ISNULL(sjh.run_status,-1) =1 ?THEN 'Succeeded'?
? ? ? ? ? ? ? ? ? ?WHEN ISNULL(sjh.run_status,-1) =2 ?THEN 'Retry'?
? ? ? ? ? ? ? ? ? ?WHEN ISNULL(sjh.run_status,-1) =3 ?THEN 'Canceled'?
? ? ? ? ? ? ? ? ? ?END?
? FROM MSDB.DBO.sysjobs sj?
? JOIN MSDB.DBO.sysjobactivity sja?
? ? ON sj.job_id = sja.job_id ?
? JOIN (SELECT MaxSessionid = MAX(Session_id) FROM MSDB.DBO.syssessions) ss?
? ? ON ss.MaxSessionid = sja.session_id?
LEFT JOIN MSDB.DBO.sysjobhistory sjh?
? ? ON sjh.instance_id = sja.job_history_id




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '27. 獲得每個數據庫空間使用情況'
print '-------------------------------------------------------'
CREATE TABLE #output(?
server_name varchar(128),?
dbname varchar(128),?
physical_name varchar(260),?
dt datetime,?
file_group_name varchar(128),?
size_mb int,?
free_mb int) ?
?
exec sp_MSforeachdb @command1=?
'USE [?]; INSERT #output?
SELECT CAST(SERVERPROPERTY(''ServerName'') AS varchar(128)) AS server_name,?
''?'' AS dbname,?
f.filename AS physical_name,?
CAST(FLOOR(CAST(getdate() AS float)) AS datetime) AS dt,?
g.groupname,?
CAST (size*8.0/1024.0 AS int) AS ''size_mb'',?
CAST((size - FILEPROPERTY(f.name,''SpaceUsed''))*8.0/1024.0 AS int) AS ''free_mb''?
FROM sysfiles f?
JOIN sysfilegroups g?
ON f.groupid = g.groupid'?
?
SELECT * FROM #output?


drop TABLE #output


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '28.Buffer Pool緩沖池里面修改過的頁總數大小'
print '-------------------------------------------------------'


SELECT count(*) * 8/1024 as cached_pages_mb,
convert(varchar(5),convert(decimal(5,2),(100-1.0*(select count(*) from sys.dm_os_buffer_descriptors b?
where b.database_id=a.database_id and is_modified=0)/count(*)*100.0)))+'%'modified_percentage,
CASE database_id WHEN 32767 THEN 'ResourceDb'
ELSE db_name(database_id)
END AS Database_name
FROM sys.dm_os_buffer_descriptors a
GROUP BY db_name(database_id),database_id
ORDER BY cached_pages_mb DESC;


/*


如果一個數據庫的大部分(超過80%)是修改過的,那么這個數據庫寫操作非常多。
反之如果這個比例接近0,那么該數據庫的活動幾乎是只讀的。讀寫的比例對磁盤的安排是很重要的。


*/

print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '29.查看 tempdb 大小和增長參數'
print '-------------------------------------------------------'



SELECT?
? ? name AS FileName,?
? ? size*1.0/128 AS FileSizeinMB,
? ? CASE max_size?
? ? ? ? WHEN 0 THEN 'Autogrowth is off.'
? ? ? ? WHEN -1 THEN 'Autogrowth is on.'
? ? ? ? ELSE 'Log file will grow to a maximum size of 2 TB.'
? ? END,
? ? growth AS 'GrowthValue',
? ? 'GrowthIncrement' =?
? ? ? ? CASE
? ? ? ? ? ? WHEN growth = 0 THEN 'Size is fixed and will not grow.'
? ? ? ? ? ? WHEN growth > 0 AND is_percent_growth = 0?
? ? ? ? ? ? ? ? THEN 'Growth value is in 8-KB pages.'
? ? ? ? ? ? ELSE 'Growth value is a percentage.'
? ? ? ? END
FROM tempdb.sys.database_files;
GO




print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '30.查看 客戶端連接IP'
print '-------------------------------------------------------'


SELECT distinct client_net_address FROM sys.dm_exec_connections?
WHERE session_id >50 and session_id != @@SPID and client_net_address?
not like '%<local machine>%'
go


print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print ' ? ? ? ? ? ? ? ? ? ? ? ? ? ? '
print '-------------------------------------------------------'
print '31.查看消耗性能的存儲過程名、存儲過程內容'
print '-------------------------------------------------------'


select distinct procname,text,b.cached_time,
b.last_execution_time,b.total_elapsed_time,
b.avg_elapsed_time,
b.last_elapsed_time,b.execution_count
?from (
select top 1000 sql_text.text as text,
sql_handle,
plan_generation_num,
execution_count,
dbid,
objectid
from sys.dm_exec_query_stats a
cross apply sys.dm_exec_sql_text(sql_handle) as sql_text
where plan_generation_num > 1
order by plan_generation_num desc
) ?a,


(
SELECT TOP 1000 d.object_id, d.database_id, OBJECT_NAME(object_id, database_id) 'procname',?
d.cached_time, d.last_execution_time, d.total_elapsed_time, d.total_elapsed_time/d.execution_count AS [avg_elapsed_time],
d.last_elapsed_time, d.execution_count
FROM sys.dm_exec_procedure_stats AS d
ORDER BY [total_worker_time] DESC
) b where a.objectid=b.object_id
order by avg_elapsed_time,execution_count desc
go



轉載于:https://www.cnblogs.com/javatec03/archive/2012/02/15/2404866.html

總結

以上是生活随笔為你收集整理的sqlserver 日常检查脚本的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

在线精品视频免费观看 | 欧美一级日韩三级 | 亚洲天堂免费视频 | av在线免费观看网站 | 久久久久国产精品视频 | 国产精品免费久久久久 | av电影免费在线 | 91看片在线免费观看 | 久久精品国产成人精品 | 成人av资源 | 日韩在线播放av | 91av在线视频免费观看 | 国产在线高清 | 成年人黄色大片在线 | 成人国产精品久久久久久亚洲 | 99免费观看视频 | 国产午夜在线 | 亚洲精品国产精品国自产观看浪潮 | 在线亚洲精品 | 在线蜜桃视频 | 在线观看av网站 | 久久精品久久精品 | 色偷偷88欧美精品久久久 | 一区二区国产精品 | 不卡的av在线 | 福利区在线观看 | 欧美成年人在线观看 | 免费在线观看视频一区 | 午夜视频在线观看一区二区 | 久久久久久久av | 色综合五月天 | 在线观看中文字幕 | 一区二区视频在线免费观看 | 午夜精品视频在线 | 精品美女在线视频 | 六月丁香激情综合色啪小说 | 免费观看9x视频网站在线观看 | 国产亚洲视频在线 | 国产亚洲午夜高清国产拍精品 | 久久综合狠狠综合久久综合88 | 婷婷五天天在线视频 | 成人在线免费观看网站 | 少妇bbw撒尿| 九九亚洲视频 | 日韩aa视频 | 女人18毛片a级毛片一区二区 | 久久精品美女视频网站 | 91麻豆看国产在线紧急地址 | 精品视频久久久 | 亚洲免费成人av电影 | 久久久久国产一区二区三区四区 | 91你懂的 | 黄色国产高清 | 久久久久久久国产精品影院 | 欧美激情在线看 | 97国产视频 | 久久精品久久久精品美女 | 九九九热精品免费视频观看网站 | 看av在线| 精品国模一区二区三区 | 91精品在线看 | 国产福利不卡视频 | 中文字幕一区二区三区在线观看 | 香蕉影院在线 | 欧美福利在线播放 | 久久精品婷婷 | 色婷婷久久久综合中文字幕 | 九九久久电影 | 97碰视频| 久久久国产精品视频 | 国产成人资源 | 91av视频在线播放 | av一级网站 | 美女久久精品 | 国产aa免费视频 | 在线成人免费 | 91日韩在线播放 | 不卡的av在线播放 | 日韩一区在线免费观看 | 日韩大片免费观看 | 五月婷婷综合在线视频 | 香蕉视频久久 | 免费视频97| 日日操天天操狠狠操 | 日韩乱码中文字幕 | 久久久久久久影院 | 中文字幕在线字幕中文 | 亚洲第一中文网 | 丰满少妇在线观看资源站 | www.久热 | 久久精品国产v日韩v亚洲 | 日韩中文字幕视频在线观看 | 中文字幕免费中文 | 中文字幕日韩有码 | 超碰97在线资源 | 国产精品日韩高清 | 黄色电影在线免费观看 | 久久精品aaa| 国产精品免费久久久 | 我要色综合天天 | 一二三区av| 日韩一区二区三区高清免费看看 | 国产福利一区二区在线 | 精品一区中文字幕 | 久久精美视频 | 亚洲片在线观看 | 亚洲视频 中文字幕 | 色婷婷国产精品 | 日韩一区正在播放 | 亚洲美女在线国产 | 人人爽人人爽 | 国产999免费视频 | a在线一区 | 久热免费| 中日韩欧美精彩视频 | 最新日本中文字幕 | 免费在线观看av电影 | 91免费观看| 国产精品一区二区三区久久 | 在线视频精品播放 | 婷婷色九月 | 欧美污在线观看 | 国产精品免费在线播放 | 亚洲成年片 | 国产91成人 | 超碰97久久 | 中文字幕日本在线 | 久久久2o19精品 | 亚洲人人精品 | 午夜视频在线观看一区二区三区 | 国产黄色网 | 亚洲精品国产欧美在线观看 | 欧美日韩国产二区 | 欧美精选一区二区三区 | 日韩精品视频免费在线观看 | 国语精品久久 | 深爱婷婷久久综合 | 五月开心婷婷 | 天天草综合网 | 国产成人精品久久二区二区 | 西西444www高清大胆 | 国产二区视频在线观看 | 性色大片在线观看 | 亚洲国产精品va在线 | 久久国产亚洲视频 | 欧美激情视频一二区 | 99视频精品全部免费 在线 | 国产精品九九久久99视频 | 91中文字幕视频 | 亚洲年轻女教师毛茸茸 | 欧美性网站 | 国产精品一区二区 91 | 最新超碰| 亚洲综合视频在线观看 | 婷婷色在线播放 | 天天射天天爱天天干 | 中文字幕在线专区 | 欧美日韩不卡一区二区 | av电影久久 | 天天操天天操天天 | av综合网址 | 99热这里只有精品久久 | 久久超碰97 | 天天干天天干天天操 | 最新av免费在线 | 亚洲精品在线观看免费 | 天天鲁天天干天天射 | 黄色录像av | 亚洲免费精品一区二区 | 国产精品一区在线观看 | 伊人va | 精品一区二区影视 | 丰满少妇在线观看资源站 | 五月天视频网站 | 欧美做受xxx | 国产精品国产三级国产aⅴ无密码 | 首页av在线 | 欧美精品国产综合久久 | 亚洲艳情 | 天天视频色 | 欧美在线aaa | 97电影手机版| 激情五月在线视频 | 中文字幕乱在线伦视频中文字幕乱码在线 | 久久99国产精品二区护士 | 不卡精品 | 国产精品99蜜臀久久不卡二区 | 黄色成人小视频 | 国产色资源 | 久草爱视频 | 亚洲国产丝袜在线观看 | 成人h电影在线观看 | 久久第四色 | 免费黄色在线播放 | 日本高清中文字幕有码在线 | 日韩欧美在线高清 | 亚洲精品国产麻豆 | 99 久久久久 | 久久综合久色欧美综合狠狠 | 久久美女高清视频 | 久精品在线 | 国产视频在线免费 | 免费不卡中文字幕视频 | 一级一级一片免费 | 中文字幕在线看视频 | 丁香六月婷 | 在线你懂| av免费在线网站 | 国产精品黄色影片导航在线观看 | av在线网站观看 | 人人超在线公开视频 | 97激情影院 | 国产免费午夜 | 久草香蕉在线视频 | 亚洲人成网站精品片在线观看 | 婷婷色网站| 国产一区二区三区久久久 | 九九99视频 | 欧美激情综合色综合啪啪五月 | 婷婷综合久久 | 婷婷综合久久 | 久久久免费看片 | 西西人体4444www高清视频 | 韩日电影在线观看 | 亚洲一级国产 | 91传媒在线 | 日韩欧美一区二区三区视频 | 又黄又刺激 | 最新高清无码专区 | 亚洲国产精品久久久久 | 国产精品ssss在线亚洲 | 狠狠色噜噜狠狠狠狠2022 | 久久综合欧美精品亚洲一区 | 久久久免费在线观看 | 97综合在线 | 免费在线黄色av | 国产一区二区在线免费播放 | 久草国产精品 | 久草97| 在线观看91精品国产网站 | 国产中文在线播放 | 日韩理论在线播放 | 国产一区二区在线视频观看 | 91精品视频在线免费观看 | 亚洲人成在线观看 | 国产韩国日本高清视频 | 亚洲天堂网站视频 | 欧美精品二区 | 久久久伊人网 | 国产美女免费 | 国产高清在线a视频大全 | 久久国产视屏 | 亚洲精品美女久久 | 最新不卡av | 91久久久久久久一区二区 | 免费精品国产va自在自线 | 亚洲成人黄色 | 在线视频久 | 在线不卡视频 | 综合久久一本 | av一区二区在线观看中文字幕 | 黄色影院在线观看 | 三级av免费 | 日韩欧美视频 | 丁香5月婷婷久久 | 欧美性精品 | 国产精品九九久久久久久久 | 久久与婷婷 | 91成人在线网站 | 成人在线免费小视频 | 69av久久| 久久精品免费 | 国产精品扒开做爽爽的视频 | 亚洲h色精品 | 亚洲视频aaa| 天天射天天干 | 韩国中文三级 | 日韩精品高清视频 | 久草视频在线免费播放 | 丁香六月欧美 | 免费在线成人av电影 | 国产成人黄色片 | 在线亚洲日本 | 色资源中文字幕 | 久久精品国产精品亚洲 | 97操碰 | 精品一区精品二区高清 | 91尤物在线播放 | 美女久久视频 | 一级免费黄色 | 91久久久久久久一区二区 | 在线免费国产 | 在线观看国产高清视频 | 天天爱天天操天天爽 | 国产午夜精品理论片在线 | 色91在线| 国产不卡视频在线 | 九九视频这里只有精品 | 天天草天天操 | 日韩黄视频 | 亚洲综合在 | 国产精品久久久久久久99 | 亚洲乱码国产乱码精品天美传媒 | 午夜电影av| 亚洲1区在线 | 国产97免费 | 丁香激情综合久久伊人久久 | 日本午夜免费福利视频 | 国产一区二区综合 | 91大神免费视频 | 成人在线免费小视频 | 九九热免费观看 | 天天干天天射天天爽 | 日韩视频免费观看高清完整版在线 | 天天爱天天操天天射 | 婷婷精品国产一区二区三区日韩 | 免费看特级毛片 | 久久久久久免费视频 | 国产群p | 国产日产精品一区二区三区四区 | 午夜视频在线网站 | 99re国产 | 97精品国产91久久久久久久 | 97精品在线视频 | 久久99精品视频 | 色六月婷婷 | 一区二区电影在线观看 | 青草视频在线看 | 午夜美女福利直播 | 亚洲 欧美 变态 国产 另类 | 亚洲欧美日韩国产一区二区 | 成年人在线看视频 | 亚洲免费专区 | 欧美激情精品久久久久久变态 | 91亚洲精品久久久久图片蜜桃 | 热久久免费视频 | 国产精品久久久久久久久久久免费 | 97电影在线看视频 | 丁香六月久久综合狠狠色 | 免费av黄色 | 91人网站 | 国产一级免费观看 | 2019中文在线观看 | 最近中文字幕高清字幕免费mv | 日p视频| 国产精品18毛片一区二区 | 成年人在线免费视频观看 | 97日日碰人人模人人澡分享吧 | 成人免费观看视频大全 | 亚洲综合一区二区精品导航 | 日本久久久久久科技有限公司 | 日日干夜夜草 | 91精品国自产拍天天拍 | 免费久久99精品国产 | 伊色综合久久之综合久久 | 91精品视频在线观看免费 | 婷婷六月中文字幕 | www亚洲视频 | av综合av| 成人黄色毛片 | 亚洲精品一区二区精华 | 欧美伦理一区二区 | 国产精品麻豆99久久久久久 | 狠狠干天天色 | 性色va| 狠狠色综合网站久久久久久久 | 免费男女网站 | 人人爽人人爽 | 99热这里只有精品在线观看 | 亚洲高清在线 | 欧美地下肉体性派对 | 99国内精品 | 日韩欧美国产精品 | 91自拍91 | 9999在线 | 99久久免费看 | 国产理论一区二区三区 | 久久免费福利视频 | 国产精品嫩草在线 | 经典三级一区 | 久艹在线免费观看 | 精品久久精品 | 久九视频 | 国产91精品高清一区二区三区 | 91亚色免费视频 | 激情五月五月婷婷 | 伊人亚洲精品 | 99视频在线播放 | 欧美日韩精品在线观看视频 | 亚洲在线视频网站 | 亚洲欧美成人 | 99资源网 | 亚洲精选国产 | 色片网站在线观看 | 国产在线观看你懂得 | 国产日韩在线播放 | 国产中文字幕91 | 国产精品久久久久久妇 | 欧美日韩亚洲一 | 狠狠干在线播放 | 一级片免费视频 | 国产精品美女久久久久久网站 | 亚洲成人av电影在线 | 国产一卡久久电影永久 | 国产又粗又猛又爽又黄的视频免费 | 91成人蝌蚪 | 久久艹影院 | 香蕉网站在线观看 | 狠狠色丁香婷婷综合久小说久 | 久久国产精品免费一区 | 成人国产精品久久久久久亚洲 | av天天在线观看 | 久久久久久久久久久久亚洲 | 蜜桃视频在线观看一区 | 网站在线观看日韩 | 婷婷综合导航 | 国产精品免费一区二区三区 | 精品免费久久久久 | 国内成人综合 | 婷婷综合五月 | 亚洲五月 | 岛国精品一区二区 | 一级免费黄视频 | 丁香综合网 | 日韩午夜三级 | 91视频传媒 | 国产精品毛片久久蜜 | 日韩网站在线免费观看 | 在线国产视频观看 | 伊人午夜视频 | 国产精品美女视频网站 | 国产91大片| 国产在线精品福利 | 日批网站在线观看 | 草久在线| 国产精品美女视频 | 天天色图 | 天天干,天天操,天天射 | 99热99热| 国产专区欧美专区 | 菠萝菠萝在线精品视频 | 91成年人视频 | 99精品国产一区二区三区麻豆 | 97超级碰碰碰视频在线观看 | 99热国产在线中文 | 国产美女免费 | 国产97免费 | 不卡av在线免费观看 | 99视频在线免费播放 | 色妞色视频一区二区三区四区 | 日韩在线播放欧美字幕 | 激情欧美在线观看 | 美女黄频视频大全 | 色婷婷a| 超黄视频网站 | 五月情婷婷 | 欧美另类视频 | 亚洲人毛片 | 久久久久久高潮国产精品视 | a√天堂中文在线 | 美女久久久久久久 | 久久99国产一区二区三区 | 一区二区激情视频 | 日韩一区二区三区高清免费看看 | 中文字幕日韩一区二区三区不卡 | 日韩欧美一区二区三区在线 | 日本精品视频在线播放 | 精品国产一区二区三区久久影院 | 天天爽夜夜爽精品视频婷婷 | 久久一精品 | 深爱激情站 | 精品视频在线看 | 欧美一级电影在线观看 | 美女国内精品自产拍在线播放 | 国产成人久久av免费高清密臂 | 在线激情av电影 | 黄av免费| 五月婷婷在线视频观看 | 天堂资源在线观看视频 | 国产精品6| 精品久久久免费视频 | 国产女v资源在线观看 | 操操操干干干 | 国产二区电影 | 99久久毛片 | 天天操天天射天天添 | 又黄又爽又刺激的视频 | 国产91丝袜在线播放动漫 | 国产成人精品久久久久 | 片网站 | 亚洲国产免费 | 国产亚洲91 | 黄色亚洲大片免费在线观看 | 欧美日韩另类在线观看 | 欧美日韩一区二区久久 | 精品久久久免费视频 | 免费美女av| 精品在线免费观看 | 视频成人免费 | 色综合www | www.天天草| 久久99婷婷 | 天天射射天天 | 九九热1 | 欧美日韩国产精品爽爽 | a v在线观看| 久久久精品国产一区二区电影四季 | 最近2019中文免费高清视频观看www99 | 亚洲精品国产精品乱码在线观看 | 欧美久久久久久久久中文字幕 | 欧美视频日韩视频 | 99 国产精品 | 国产美女精品视频免费观看 | 婷婷伊人网 | 97在线播放视频 | 亚洲综合视频在线播放 | 97激情影院 | 久久久免费播放 | 久草在线手机观看 | 永久免费视频国产 | 精品视频中文字幕 | 免费在线激情电影 | 337p日本大胆噜噜噜噜 | 在线蜜桃视频 | 91精品国产福利在线观看 | 国产免码va在线观看免费 | 97人人看 | 日韩高清国产精品 | 亚洲黄色三级 | 久久综合狠狠综合久久狠狠色综合 | 99夜色| 日韩电影精品一区 | av线上看| 最近最新中文字幕视频 | 国产精品九九久久99视频 | 日本中文字幕影院 | 免费在线91| 中文字幕在线观看完整版 | 91精品国产自产老师啪 | 四虎成人精品 | 日韩免费在线观看视频 | 国产片免费在线观看视频 | 国产成人av电影在线 | 偷拍区另类综合在线 | 婷婷亚洲五月色综合 | 狠狠综合| 亚洲欧洲xxxx | 在线观看香蕉视频 | 国产精品国产亚洲精品看不卡 | 亚洲一区二区三区精品在线观看 | 国产精品手机视频 | 中国一级片在线播放 | 婷婷播播网 | 4438全国亚洲精品观看视频 | 中文字幕一区二 | 伊人久久av | 精品av网站| 久久久精品日本 | 在线观看亚洲电影 | 国产精品免费一区二区 | 国产日韩欧美自拍 | 免费看片成人 | 欧美日韩一级久久久久久免费看 | 综合色综合 | 国产成人精品免费在线观看 | 中文字幕有码在线观看 | 久久久久久电影 | 国产精品99免视看9 国产精品毛片一区视频 | 国产三级在线播放 | 中文字幕在线免费 | 国产中文在线观看 | 亚洲91视频| 成人免费视频网址 | 毛片.com| 日韩精品你懂的 | 日韩精品一区二区电影 | 免费在线观看一区 | 精品一区精品二区 | 在线观看中文字幕2021 | 欧美日韩裸体免费视频 | 国产午夜精品av一区二区 | 99热精品久久 | 午夜精品久久久久久 | 日日干 天天干 | 国产福利精品在线观看 | 天天操天天射天天爽 | 国产 一区二区三区 在线 | 欧美日本不卡视频 | 欧美超碰在线 | 国产精品久久久久久久久久东京 | 国产艹b视频| 国产精品美女www爽爽爽视频 | 成人a级网站 | 亚洲精品美女久久17c | 中文字幕免费在线 | 六月丁香在线视频 | 国产啊v在线观看 | 国产视频欧美视频 | 中文字幕 二区 | 国产色视频 | 97国产大学生情侣白嫩酒店 | 毛片网在线 | 夜夜操网站 | 久久久久久免费 | 五月色综合 | 亚洲涩涩涩| av大片网址| 精品福利av | 毛片3 | www国产亚洲精品久久网站 | 日韩丝袜在线 | 久久午夜色播影院免费高清 | 亚洲丝袜一区二区 | 国产区免费在线 | 成人h在线| aaawww| 久久在线免费 | 亚洲视频在线视频 | 在线成人免费 | 欧美孕妇与黑人孕交 | 四虎在线观看精品视频 | 色停停五月天 | 视频在线在亚洲 | 色福利网站 | 婷婷精品 | 超碰人人99| 蜜桃视频在线观看一区 | 天天做夜夜做 | 午夜狠狠操 | 99热精品国产一区二区在线观看 | 欧美日韩不卡在线 | 黄色一级大片在线免费看产 | 精品一区二区三区久久久 | 日韩大片在线免费观看 | 国色天香第二季 | 日本大片免费观看在线 | 99久高清在线观看视频99精品热在线观看视频 | 久久9999久久免费精品国产 | 国产精品粉嫩 | 精品日韩视频 | 亚洲人久久久 | 在线成人一区二区 | 国产免费人成xvideos视频 | 日韩女同一区二区三区在线观看 | 国产无限资源在线观看 | 国产一区二区中文字幕 | 伊人电影在线观看 | 伊人日日干 | 黄色国产区 | 九九涩涩av台湾日本热热 | 激情动态| 在线观看91精品国产网站 | 草久在线视频 | 一区二区三区 亚洲 | 天天综合区 | 日本精品视频免费 | 国产91大片| 99久久精品国产毛片 | 久艹视频免费观看 | 国产精品嫩草影院99网站 | 免费看91的网站 | 欧美日在线 | 日本女人在线观看 | 欧美调教网站 | 色综合久久网 | 亚洲综合精品视频 | 青青河边草免费 | 欧美成人在线网站 | 欧美午夜一区二区福利视频 | 最新黄色av网址 | 一区二区在线电影 | 亚洲综合色视频在线观看 | 91黄色小视频 | 99在线视频网站 | 日韩欧美视频一区 | 国产一级一片免费播放放 | 国产精品一区欧美 | 中文字幕在线看视频 | 91看片在线免费观看 | 国产精品乱码久久久久 | 天堂在线免费视频 | 久久九九国产精品 | 色婷婷综合久久久久 | 91免费观看网站 | 中文字幕传媒 | 91成人在线免费观看 | 99视频播放 | 亚洲开心色| 久久久免费电影 | 久久久久亚洲精品中文字幕 | 久久婷婷开心 | 久久只有精品 | 亚洲成年人在线播放 | 国产美女精品人人做人人爽 | 在线岛国av| 国产在线 一区二区三区 | 久久精品久久精品久久精品 | 色中文字幕在线观看 | 国产免费又粗又猛又爽 | 国产欧美在线一区 | www.com在线观看 | 综合色在线观看 | 网站免费黄 | 在线亚州 | 午夜电影久久 | 六月丁香六月婷婷 | 久久国产精品免费视频 | 亚洲国产中文字幕在线 | 亚洲精品国产日韩 | 五月天电影免费在线观看一区 | 国产福利午夜 | 亚洲精品视频播放 | 色婷婷综合久久久久 | 色综合激情网 | 亚洲禁18久人片 | 日韩免费小视频 | 香蕉视频国产在线 | 日韩免费一级a毛片在线播放一级 | av片一区二区 | 视频一区久久 | 精品在线观 | 亚洲精品在线二区 | 91人人在线 | 一区二区三区三区在线 | 91高清免费在线观看 | 国产一区二区综合 | 综合久久久 | 在线观影网站 | 韩日成人av | 又黄又爽又湿又无遮挡的在线视频 | 日韩在线观看网址 | 日韩欧美精品在线观看 | 久久精品播放 | www最近高清中文国语在线观看 | 久久香蕉电影网 | 在线看日韩av | 色综合五月 | 激情图片久久 | 国产成人精品网站 | 精品免费观看 | 一区二区中文字幕在线观看 | 国产精品麻豆欧美日韩ww | 久久在线免费观看 | 人人草天天草 | 狠狠色噜噜狠狠 | 欧美精品乱码久久久久久 | 日韩高清dvd | 亚洲在线高清 | av一区在线播放 | 亚洲精品无 | 亚洲国产69| www.午夜视频 | 操操操com| 国产一级黄| 91.麻豆视频 | 天天射天天爱天天干 | 国内精品久久久久久久影视麻豆 | 精品在线视频一区二区三区 | 丝袜美腿av | 国产精品久久久久免费a∨ 欧美一级性生活片 | 久久视频在线免费观看 | 92精品国产成人观看免费 | 色婷婷视频 | 国产色道 | 亚洲综合色av | 丁香视频全集免费观看 | 亚洲天堂网视频在线观看 | 日韩素人在线观看 | 香蕉影院在线播放 | 日韩国产精品毛片 | 久久精品亚洲一区二区三区观看模式 | 久久国产成人午夜av影院潦草 | 天天做天天爱天天爽综合网 | 免费观看黄色av | 亚洲专区欧美 | 人人爱人人爽 | 国产专区第一页 | 国产免费成人av | 国产在线不卡视频 | 久久美女精品 | 亚洲成人午夜av | 99这里只有久久精品视频 | 日韩精品久久一区二区 | 亚洲日本中文字幕在线观看 | 黄色一级大片在线免费看产 | 久久久精品一区二区三区 | 国产精品二区在线观看 | 免费日韩三级 | 永久免费毛片在线观看 | 日韩高清精品免费观看 | 国产精品一区在线观看你懂的 | 久久久国产精品电影 | 久久综合久久综合久久综合 | 欧美日韩中文在线视频 | 美女视频黄色免费 | 久久一及片 | 免费看片网址 | 国产精品久久嫩一区二区免费 | 丁香婷婷网 | 日产av在线播放 | 精品国产伦一区二区三区观看说明 | 日韩欧美精品一区二区三区经典 | 视频一区在线免费观看 | 日韩影视大全 | 丝袜av一区 | avv天堂| 亚洲一级二级三级 | 中文字幕文字幕一区二区 | 免费观看国产精品视频 | 国产自制av | 国产明星视频三级a三级点| 在线观看亚洲国产 | 亚洲精品国产精品国 | 国产精品麻豆91 | 国产精品毛片久久蜜 | 69人人| 国产亚洲精品美女久久 | 国产精品区一区 | 欧美大香线蕉线伊人久久 | 国产成人精品免费在线观看 | 国产精品99久久久久久小说 | 狠狠狠色丁香婷婷综合久久五月 | 日韩va在线观看 | 免费观看高清 | 久久99精品久久久久久久久久久久 | 国产精品久久久久久久7电影 | 国产麻豆精品在线观看 | 成年人视频在线免费播放 | 一级片在线 | 热久久99这里有精品 | 久久久久麻豆 | 美女久久久久久久久久久 | 亚洲精品国精品久久99热 | 日韩欧美大片免费观看 | 九色91在线 | 国产三级视频在线 | 色婷婷播放| 成人h动漫精品一区二 | 亚洲综合成人专区片 | 四虎影视成人精品国库在线观看 | 午夜久久福利视频 | 成人91av| 五月激情片 | 午夜av大片 | 欧美久久久久久久久久 | 美女av在线免费 | 久久久国产精品成人免费 | 日本精品久久久久 | 免费在线观看av的网站 | 国产精品18videosex性欧美 | 亚洲午夜剧场 | 久久人人爽av | 婷婷丁香狠狠爱 | 国产一二三区在线观看 | 国产精品大片免费观看 | 国产精品1024 | 五月综合婷 | 久久国产精品99久久久久久老狼 | 91在线一区 | 在线观看免费成人 | 99精品国产高清在线观看 | 中文字幕在线视频国产 | 中文字幕中文中文字幕 | 国产精品毛片久久久久久久 | 亚洲成成品网站 | 欧美性色综合网站 | 一区二区三区观看 | 免费精品在线观看 | 免费在线观看av网站 | 国产91精品欧美 | 日韩免费电影网站 | www.xxxx变态.com | 天天操天天操一操 | 超碰在线观看99 | 天天操天天色天天射 | 国产精品成人a免费观看 | 亚洲久草网 | 国产69精品久久99的直播节目 | 在线国产视频观看 | 97超碰在线久草超碰在线观看 | 欧美性久久久久久 | 一区二区三区四区五区在线 | 在线一区电影 | 亚欧日韩av | 国产在线不卡 | 最新亚洲视频 | 国产一区二区三精品久久久无广告 | 国产成人av电影 | 日韩激情免费视频 | 99精品欧美一区二区 | 国产成人61精品免费看片 | 三级黄色网络 | 激情av网| 国产精品久久久久久久久费观看 | 日日操夜夜操狠狠操 | 2021久久 | 国产破处视频在线播放 | 九九日韩 | 欧美一区二区在线看 | 免费黄色a网站 | 国产爽妇网 | 夜夜爽天天爽 | 国产精品久久久久久久久久久久午夜 | 久久久久久久久久久久亚洲 | 99久久激情视频 | 99精品欧美一区二区三区黑人哦 | 免费黄a大片| 亚洲欧美日韩一区二区三区在线观看 | 少妇性bbb搡bbb爽爽爽欧美 | 中文字幕一区二区三区四区 | 91日韩在线 | 国产精品日韩在线播放 | 91成人免费在线视频 | 91精品国产高清 | 久久狠狠一本精品综合网 | 人人爽人人澡人人添人人人人 | 天天色天天干天天色 | 中文不卡视频 | 草久草久| 国产在线不卡精品 | 国产高清不卡av | 99热精品国产 | 中文字幕888| 欧美一级久久 | 欧产日产国产69 | 国产精品久久久久久爽爽爽 | 91完整版 | 亚洲视频,欧洲视频 | 亚洲精品日韩在线观看 | 手机看片午夜 | 久久久久欠精品国产毛片国产毛生 | 天堂av一区二区 | 99激情网 | 国产免费一区二区三区网站免费 | 在线播放亚洲 | 色综合国产| 五月天天在线 | 亚洲性视频 | 免费a v在线 | 69xx视频| 亚洲精品国产精品久久99 | 亚洲综合色av | 蜜臀av一区二区 | 国产一区二区在线播放视频 | 日本aa在线| 69视频永久免费观看 | 91麻豆精品国产 | 国内精品久久久久 | 精品一区二区免费视频 | 国内精品久久影院 | 波多野结衣视频一区二区 | 久久亚洲区 | 日韩精品久久久久久久电影99爱 | 免费在线观看黄网站 | 免费视频 三区 | 色99中文字幕 | 亚洲精品视频网站在线观看 | 日韩亚洲在线 | 午夜av网站| 久久综合色影院 | 97福利在线观看 | 亚洲深爱激情 | 99热在线这里只有精品 | 日韩国产精品一区 | 日本久久成人中文字幕电影 | 国产中文字幕视频 | 国产无区一区二区三麻豆 | 成人一级黄色片 | 日韩精品久久一区二区三区 | 亚洲视频在线免费看 | 黄色av网站在线观看免费 | 在线日韩av| 国产精品理论片在线播放 | 欧美日韩中文字幕综合视频 | 国产亚洲视频在线 | 天天操天天干天天操天天干 | 视频成人永久免费视频 | 欧美日韩国产精品一区二区亚洲 | 免费看高清毛片 | 亚洲欧美一区二区三区孕妇写真 | 中文av在线免费观看 | 97在线精品国自产拍中文 | 国产麻豆成人传媒免费观看 | 婷婷国产在线 | 97人人视频 | av在线永久免费观看 | 黄色网www| 一区二区三区 中文字幕 | 91亚洲精品国偷拍 | 中文字幕av一区二区三区四区 | 国内精品久久久精品电影院 | 国产欧美精品一区二区三区四区 | 91日韩精品一区 | 91网在线观看 | 麻豆国产网站入口 | 久久激情五月丁香伊人 | 97超级碰碰碰碰久久久久 | 狠狠色丁香婷婷综合最新地址 |