`

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

阅读更多
SQL Server 2005的新功能为动态管理对象,它们是在指定时间返回某个数据库实例的特殊状态信息的数据库视图或函数。这些对象允许数据库管理员或开发者对数据库服务器进行高效监控。动态管理对象取代了SQL Server以前版本中的许多系统表格,但也为数据库管理员提供更多观测手段。

服务器上需要监控的内容,几乎都有对应的动态管理对象。既然有这么多动态管理对象,在这篇文章中逐一进行讨论是不实际的。例如,共有12类动态管理对象,但这里我主要讨论我认为相当重要的五个对象,它们分别来自与SQL Server操作系统、目录和执行有关的类中。

这些对象被分为两类:数据库级别和服务器级别。SQL Server 2005的安全构架有些不同,所以你必须采取一些措施保证你能够使用本文讨论的视图和函数。你必须保证使用这些例子的用户能够查看对象的SERVER STATE和DATABASE STATE。可以应用GRANT语句来完成这一点。

在我开始介绍动态管理对象之前,你应该建立一个可用在所有例子里面的表格。列表A是建立这个表格的代码。

列表A

IF OBJECT_ID('DMVTest') IS NOT NULL 
DROP TABLE DMVTest 
GO
CREATE TABLE DMVTest
(C1 INT IDENTITY PRIMARY KEY CLUSTERED, C2 INT, C3 CHAR(5)) 


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

sys.dm_os_performance_counters:这个视图返回的信息列举与SQL Server直接相关的性能统计。返回的信息代表通过Windows性能监控器显示的外部性能计数器。在SQL Server 2000中,这些数据以一个叫做sysperfinfo的系统表格来表示,SQL Server 2005中也有这个表格,但仅用于向后兼容。将来的版本可能会删除这个表格。

要了解如何应用这个视图,而不是运行Windows性能监控器来获取系统信息,请运行列表B中的查询代码。这个查询将返回服务器当前时刻的缓存命中率(Buffer Cache Hit Ratio)。缓存命中率指在内存中所发现的SQL Server请求页面的百分比。如果服务器运转正常,这个值一般在90%以上。如果这个值低于90%,则意味着服务器将会去硬盘那里恢复数据页面,这可能是服务器需要更多内存的信号。

列表B

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


如果你为了同样的目的,准备运行上面的查询,并将得到的结果与运行Windows性能监控器显示的结果进行比较(SQL Server:缓冲器管理器缓存命中率),你会发现这些数据几乎是一样的。稍稍研究一下,就可以根据这个表格开发出你自己的脚本库,而不必总是运行Windows性能监控器。

Caveat:这个视图仅限于SQL Server相关的计数器使用。如果你希望获得SQL Server之外的数据,你还是要使用Windows性能监控器。

目录相关动态管理视图和函数

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

查看列表C。这个函数接受5个参数:数据库的ID、所讨论的表格或视图的ID、表格或视图上的一个特定目录的ID(被我忽略)、分区号(也被我忽略)和一个模式,我将它指定为“DETAILED”。将这些参数提交给这个函数会允许你查看DMVTest表格中的所有目录细节。

在前面定义的表格中运行列表C中的查询,你会发现表格中既没有页面也没有记录。在DMVTest中增加一条记录,再运行查询,就会发现表格中增加了一个页面。

INSERT INTO DMVTest(C2, C3)

VALUES(1,1)


列表C

SELECT OBJECT_NAME([object_id]),* FROM
sys.dm_db_index_physical_stats (DB_ID(), 
OBJECT_ID('DMVTest'),NULL,NULL, 'DETAILED') 


这个函数返回的另一个特别有趣的域为avg_page_space_used_in_percent域,它说明数据页面有多大。从查询中发现数据页面约为0.25%。你可以应用这个数据来开发程序,查看数据库表格,并根据程序中设定的标准,重新为它们编写目录。

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

sys.dm_exec_requests:这个视图显示发生在SQL Server实例中的每个请求的有关信息。当你研究服务器阻塞时,由此视图提供的信息特别有用。读、写、会话设置和blocking_session_id是这个视图返回的一些有用数据。blocking_session_id栏指出系统上阻塞数据库请求的会话。稍后,我将举出一个例子,说明如何确定用户运行的阻塞请求的语句。

sys.dm_exec_sessions:SQL Server上每个得到验证的会话由它返回一行。在你希望找出连接到数据库服务器的所有用户时,可用到这个视图。它返回session_id、连接通过它建立会话执行的读和写的程序、以及其它一些会话设置。这个视图还包含一个叫做is_user_process的BIT域,在查询这个表格时你可能会用到它。数值1表示会话为用户会话而非系统定义的会话。

sys.dm_exec_sql_text:这是一个根据sql操作返回SQL Server语句的动态管理函数。对某些动态管理函数而言,SQL Server 2005将正在执行的sql语句以散列值存储。这个散列值可由sys.dm_exec_sql_text动态管理函数解析。但是,任何时候你希望将一个函数与另一个对象连接起来,并从表格或视图中提交一个域值时,就会需要用到新的APPLY运算符。SQL Server 2005以前的版本并不具备这一功能。(欲了解SQL Server 2005中APPLY运算符的详细信息,请参阅这篇文章。)

现在我们讨论一下如何应用这三个动态管理函数。列表D中的查询列举出数据库中所有当前用户请求执行的会话、阻塞会话、程序、主机和SQL Server语句。

列表D

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 


注意我正在使用dm_exec_sql_text函数,并从sys.dm_exec_requests视图中提交sql_handle域。由sys.dm_exec_requests和sys.dm_exec_sessions视图返回的每一行,都将调用sys.dm_exec_sql_text函数。

测试

对它们进行测试是学习这些新型动态管理对象的最佳方法。SQL Server在线书籍提供了使用这些对象的一些资料,但动手使用要比阅读学到更多内容。投入一点努力,你就会发现许多应用对象的新方法,不仅包括这个例子中列出的对象,还包括SQL Server 2005中的动态管理对象。

转自:http://server.51cto.com/art/200612/36322.htm
分享到:
评论

相关推荐

    SQL Server 2005 技术内幕四部

    这个压缩包包含四本关于SQL Server 2005的技术内幕书籍,分别聚焦于T-SQL查询、T-SQL程序设计、存储引擎以及查询、调整和优化,另外还附带了一本与.NET相关的文档,对于深入理解SQL Server 2005的各个方面有着重要的...

    SQL Server 2005 数据库系统开发完全手册

    《SQL Server 2005 数据库系统开发完全手册》是一部深入探讨SQL Server 2005数据库管理系统的重要参考资料,适合数据库开发人员、管理员以及对SQL Server 2005有兴趣的学习者。这本书包含了丰富的实践代码,旨在帮助...

    SQLServer2005_SSMSEE.zip

    "SQLServer2005_SSMSEE.msi"是SSMSEE的安装文件,用户下载后只需双击执行,按照安装向导的步骤即可完成安装。安装过程中,系统会提示选择安装路径,以及是否创建桌面快捷方式等选项。安装完成后,通过启动SSMSEE,...

    ASP.NET自行车管理网站VS2005+SQLSERVER2005

    ASP.NET自行车管理网站是基于微软的开发环境Visual Studio 2005(VS2005)和数据库管理系统SQL Server 2005构建的。这个项目是一个学习资源,由作者在学习过程中完成,并决定分享出来供他人参考。在这个网站中,我们...

    Inside Microsoft SQL Server 2005

    通过学习这三个方面的内容,读者可以全面了解SQL Server 2005的架构、操作和最佳实践,无论是对于数据库管理员还是开发者,都能从中受益匪浅。掌握这些知识,有助于在实际工作中优化查询性能、保障数据安全,以及...

    SQL Server 2005 视频教程 MSDN WebCasts 管理工具使用

    1. **SQL Server Management Studio (SSMS)**:这是SQL Server的主要管理工具,集成了查询编辑器、对象资源管理器、任务和脚本生成器等,使得数据库管理员和开发者可以方便地创建、管理和监控SQL Server对象。...

    sqlserver2005工具

    综上所述,"sqlserver2005工具"可能是一个优化过的第三方工具,具备SQL Server Management Studio的部分或全部功能,并且在特定方面(如速度)有所改进。无论具体工具如何,了解并熟练掌握这些SQL Server 2005的核心...

    数据库(sql server2005)课件

    通过深入学习SQL Server 2005的课件,不仅可以掌握数据库管理的基础知识,还能了解如何利用这个平台构建高效、安全且可扩展的企业级数据解决方案。无论你是初学者还是经验丰富的DBA,都能从中获益匪浅,提升自己的...

    第二章SQLserver2005概述

    SQL Server 2005是微软推出的关系数据库管理系统,它基于E.F.Codd的关系数据库理论和SQL查询语言,旨在提供高性能、可靠性和易用性的数据存储与管理解决方案。本章将探讨SQL Server 2005的基础知识,包括其新特性、...

    sql server2005 技术内幕(代码)

    《SQL Server 2005技术内幕》是深入解析Microsoft SQL Server 2005查询优化与调优的专业书籍,其代码部分包含了丰富的实践示例,帮助读者理解并掌握SQL Server 2005的核心技术。以下是根据书中的章节代码文件名,...

    sqlserver2005学习课件

    SQL Server 2005是微软公司推出的一...通过这个SQL Server 2005学习课件,你可以深入了解数据库管理、编程、优化等多个方面,为成为数据库专家打下坚实基础。无论你是开发者、DBA还是数据分析人员,都能从中获益匪浅。

    sql server 2005编程入门经典

    同时,还将教授如何使用SQL Server 2005的图形化工具——SQL Server Management Studio (SSMS)来进行数据库对象的创建、修改和管理,如表、视图、索引和存储过程。 在安全性方面,书中有专门章节讲述如何设置用户...

    SqlServer2005数据库JDBC驱动

    "DLL工具.exe"可能是一个帮助用户管理动态链接库(DLL)的工具,对于配置JDBC驱动可能有所帮助。"DLL之家.htm"可能是关于DLL文件的在线资源或教程。 3. X86与X64:这两个文件夹可能分别包含32位(X86)和64位(X64...

    酒店管理系统(ASP.NET+SQLServer2005)

    《酒店管理系统(ASP.NET+SQLServer2005)》是一款专为初学者设计的教育项目,旨在帮助他们掌握ASP.NET编程技术和SQL Server 2005数据库管理系统的结合应用。这个系统涵盖了酒店日常运营所需的各项功能,如客房预订、...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...

    c#2005_sqlserver2005数据库与网络开发

    《C# 2005 SQLServer 2005数据库与网络开发》是一本深入探讨C#编程语言与SQL Server 2005数据库结合应用于网络开发的专业书籍。本书旨在帮助开发者掌握如何利用C# 2005的强大功能与SQL Server 2005的高效数据管理...

    SQL Server数据对象结构的动态建立与访问

    SQL Server 数据对象结构的动态建立与访问 本文探讨了 Visual Basic 应用程序访问 SQL Server 数据的三种常用的方法,即使用数据访问对象/Jet、使用 ODBC API 编程和使用 SQL Server 的 Visual Basic 库(VBSQL)。...

    java web 客户管理系统 SQL Server 2005

    Java Web 客户管理系统...综上所述,这个Java Web客户管理系统利用了Java Web技术栈和SQL Server 2005数据库,实现了对客户信息的有效管理和操作。开发者需掌握Java编程、数据库设计、Web服务和安全等多个领域的知识。

    Microsoft SQL Server 2005 Express Edition SP3

    Microsoft SQL Server 2005 Express Edition (SQL Server Express) 是一个免费且易于使用的 SQL Server 2005 版本,它替换了 Microsoft Desktop Engine (MSDE)。与 Microsoft Visual Studio 2005 集成之后,SQL ...

    SQL Server 2005数据库管理与应用高手修炼指南配套文件

    《SQL Server 2005数据库管理与应用高手修炼指南》是一本专注于SQL Server 2005这一数据库管理系统的学习资料。SQL Server 2005是微软公司推出的数据库平台,广泛应用于数据存储、分析和应用程序开发。这本书的配套...

Global site tag (gtag.js) - Google Analytics