水滴石穿

渴望成为高手--Amy.Qiu
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

SQL Server 2005五个有用的动态管理对象

Posted on 2009-04-07 14:34  AmyQiu  阅读(223)  评论(0编辑  收藏  举报

SQL Server操作系统相关动态管理对象

sys.dm_os_performance_counters:视图返回SQL Server直接相关的性能统计。

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

索引相关动态管理视图和函数

sys.dm_db_index_physical_stats:这个动态管理函数为数据表格和视图返回相关数据及索引信息。

SELECT * FROM sys.dm_db_index_physical_stats (DB_ID(),
OBJECT_ID('Test'),NULL,NULL, 'DETAILED')

其中avg_page_space_used_in_percent域,它说明数据页面有多大。

执行相关的动态管理视图和函数

sys.dm_exec_requests:显示发生在实例中的每个请求的有关信息。可用此视图查询服务器阻塞。

sys.dm_exec_sessions:SQL Server上每个得到验证的会话由它返回一行。可用此视图找出连接到数据库服务器的所有用户时。

sys.dm_exec_sql_text:sql操作返回SQL Server语句的动态管理函数。

查询数据库中所有当前用户请求执行的会话、阻塞会话、程序、主机和SQL语句

SELECT r.session_id, r.blocking_session_id, s.program_name,
s.host_name, t.text
FROM sys.dm_exec_requests r
INNER JOIN sys.dm_exec_sessions s ON r.session_id = s.session_id
CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t
WHERE s.is_user_process = 1