通过sql server动态管理试图查询性能数据

<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-520092929 1073786111 9 0 415 0;} @font-face {font-family:Consolas; panose-1:2 11 6 9 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-520092929 1073806591 9 0 415 0;} @font-face {font-family:Tahoma; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:1627400839 -2147483648 8 0 66047 0;} @font-face {font-family:Verdana; panose-1:2 11 6 4 3 5 4 4 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:536871559 0 0 0 415 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:宋体; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi; mso-font-kerning:1.0pt;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-family:"Calibri","sans-serif"; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page WordSection1 {size:595.3pt 841.9pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:42.55pt; mso-footer-margin:49.6pt; mso-paper-source:0; layout-grid:15.6pt;} div.WordSection1 {page:WordSection1;} -->

  1 Buffer Cache Hit Ratio:

 

 

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%'

 

2 SQLSERVER CPU 占有率

 

 

 

DECLARE @ts_now BIGINT

        SELECT @ts_now = cpu_ticks / CONVERT(FLOAT, ms_ticks) FROM

sys.dm_os_sys_info

       

        SELECT record_id,

                DATEADD(ms, -1 * (@ts_now - [timestamp]), GETDATE()) AS

EventTime,

                SQLProcessUtilization,

                SystemIdle,

                100 - SystemIdle - SQLProcessUtilization AS

OtherProcessUtilization

        FROM (

                 SELECT

                        record.value('(./Record/@id)[1]', 'int') AS record_id,

                        record.value

('(./Record/SchedulerMonitorEvent/SystemHealth/SystemIdle)[1]', 'int') AS

SystemIdle,

                        record.value

('(./Record/SchedulerMonitorEvent/SystemHealth/ProcessUtilization)[1]', 'int')

AS SQLProcessUtilization,

                        TIMESTAMP

                FROM (

                        SELECT TIMESTAMP, CONVERT(XML, record) AS record

                         FROM sys.dm_os_ring_buffers

                        WHERE ring_buffer_type =

N'RING_BUFFER_SCHEDULER_MONITOR'

                        AND record LIKE '% %') AS x

                ) AS y

        ORDER BY record_id DESC

 

 

 

Memory Manager

declare @physical_memory_kb int

 

SELECT @physical_memory_kb =   total_physical_memory_kb FROM sys . dm_os_sys_memory

select *, convert ( decimal , cntr_value )/ convert ( decimal , @physical_memory_kb )   as 'P'   FROM

sys . dm_os_performance_counters

where    object_name like '%Memory Manager %' and counter_name like '%server memory%'

 

 

 

Buffer Manager  Free pages

 

SELECT   * FROM sys . dm_os_performance_counters

WHERE counter_name   like '%free pages%' and object_name like '%Buffer Manager%'

 

 

Buffer Manager   : Page life expectancy

SELECT   * FROM sys . dm_os_performance_counters

WHERE counter_name   like '%expectancy%' and object_name like '%Buffer Manager%'

 

 

 

查找表占用磁盘    sp_spaceused

 

查询各个磁盘分区的剩余空间: Exec master.dbo.xp_fixeddrives

 

 

查询数据库服务器各数据库日志文件的大小及利用率 DBCC SQLPERF(LOGSPACE)

 

 

开启   xp_cmdshell

-- 允许配置高级选项

EXEC sp_configure 'show advanced options' , 1

GO

-- 重新配置

RECONFIGURE

GO

-- 启用 xp_cmdshell

EXEC sp_configure 'xp_cmdshell' , 1

GO

-- 重新配置

RECONFIGURE

GO

 

获取磁盘空间的:

EXEC XP_CMDSHELL 'fsutil volume diskfree e: '

   需要开启

-- 允许配置高级选项

EXEC sp_configure 'show advanced options' , 1

GO

-- 重新配置

RECONFIGURE

GO

-- 启用 xp_cmdshell

EXEC sp_configure 'xp_cmdshell' , 1

GO

-- 重新配置

RECONFIGURE

GO

B

 

获取一个磁盘总容量

CREATE FUNCTION dbo.GetDriveSize

(@driveletter CHAR(1))

RETURNS NUMERIC(20)

BEGIN

  DECLARE  @rs INTEGER, @fso INTEGER, @getdrive VARCHAR(13), @drv

INTEGER,

@drivesize VARCHAR(20)

 

 

  SET @getdrive = 'GetDrive("' + @driveletter + '")'

  EXEC @rs = sp_OACreate 'Scripting.FileSystemObject', @fso OUTPUT

 

 

  IF @rs = 0

   EXEC @rs = sp_OAMethod @fso, @getdrive, @drv OUTPUT

  IF @rs = 0

   EXEC @rs = sp_OAGetProperty @drv,'TotalSize', @drivesize OUTPUT

  IF @rs<> 0

   SET @drivesize = NULL

 

  EXEC sp_OADestroy @drv

  EXEC sp_OADestroy @fso

 

 

  RETURN @drivesize

END

 

GO

 

 

SELECT dbo.GetDriveSize('C')

 

 

获取每个磁盘空间情况

 

CREATE PROCEDURE sp_diskspace

AS

SET NOCOUNT ON

DECLARE @hr int

DECLARE @fso int

DECLARE @drive char ( 1)

DECLARE @odrive int

DECLARE @TotalSize varchar ( 20)

DECLARE @MB bigint ; SET @MB = 1048576

CREATE TABLE #drives ( ServerName varchar ( 15),

drive char ( 1) PRIMARY KEY ,

FreeSpace int NULL,

TotalSize int NULL,

FreespaceTimestamp DATETIME NULL)

INSERT #drives ( drive , FreeSpace )

EXEC master . dbo . xp_fixeddrives

EXEC @hr = sp_OACreate 'Scripting.FileSystemObject' , @fso OUT

IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso

DECLARE dcur CURSOR LOCAL FAST_FORWARD

FOR SELECT drive from #drives

ORDER by drive

OPEN dcur

FETCH NEXT FROM dcur INTO @drive

WHILE @@FETCH_STATUS = 0

BEGIN

EXEC @hr = sp_OAMethod @fso , 'GetDrive' , @odrive OUT , @drive

IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso

EXEC @hr = sp_OAGetProperty @odrive , 'TotalSize' , @TotalSize OUT

IF @hr <> 0 EXEC sp_OAGetErrorInfo @odrive

UPDATE #drives

SET TotalSize = @TotalSize / @MB , ServerName = host_name (), FreespaceTimestamp = ( GETDATE ())

WHERE drive = @drive

FETCH NEXT FROM dcur INTO @drive

END

CLOSE dcur

DEALLOCATE dcur

EXEC @hr = sp_OADestroy @fso

IF @hr <> 0 EXEC sp_OAGetErrorInfo @fso

SELECT ServerName ,

drive ,

TotalSize as 'Total(MB)' ,

FreeSpace as 'Free(MB)' ,

CAST (( FreeSpace /( TotalSize * 1.0))* 100.0 as int ) as 'Free(%)' ,

FreespaceTimestamp

FROM #drives

ORDER BY drive

DROP TABLE #drives

RETURN

GO

 

 

用户名称,密码:

select p . name , p . type_desc ,

  p . default_database_name ,

  s . status , s . name , s . password , s . dbname

  , s .*    from sys . server_principals p join

          sys . syslogins s ON p . sid = s . sid

  where p . type_desc = 'SQL_LOGIN'

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server并发控制是数据管理系统(DBMS)确保多个用户同时访问数据库时不破坏数据一致性和完整性的重要机制。在并发环境下,多个事务可能试图同时读取、修改或删除数据,这就需要管理这些操作的顺序和权限,以避免数据冲突。SQL Server提供了几种并发控制策略: 1. **锁机制**:SQL Server使用行级锁定(Row-Level Locks)和页级锁定(Page Locks)来实现并发控制。行锁是针对特定行的,不会阻塞其他事务对同一表中其他行的访问,而页锁锁定整个页,可能会导致其他事务等待。 2. **死锁检测**:当两个或更多的事务互相等待对方释放资源时,就会发生死锁。SQL Server有死锁检测算法,一旦检测到死锁,会按照特定策略解除其中一个事务的锁,恢复系统运行。 3. **并发度控制**:SQL Server支持两种主要的并发控制模型:共享模式(Reader)和排他模式(Writer)。共享模式允许多个事务同时读取数据,但只有一个事务能进行写操作;排他模式则不允许其他事务读取正在被写的数据。 4. **可重复读(Repeatable Read)**:这是事务隔离级别之一,保证事务看到的是事务开始时刻的数据版本,直到事务结束。这通过在事务开始时为该事务获取锁的方式实现。 5. **序列化(Serializable)**:最高的隔离级别,确保每个事务的行为就像在单用户环境下执行一样,没有并发的影响。但这通常会导致性能下降,因为事务会更加保守地处理数据

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值