当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 了解SQL Server 2005五个有用的动态管理对象

MSSQL
MS SQL Server 2000系统数据类型
SQL Server几个容易出错的数据类型
SQL Server 数据库中关于死锁的分析
站长必备的sql查询语言基础知识
经验分享交流:常用SQL语句技法
SQL SERVER 2000 数据库备份与还原
解决SQL SERVER 2005无法远程连接的问题
SQL Server 安装参考意见
在sqlserver2005中安装sql server 2000的示例数据库northwind
SQL Server 2000 数据库分离与附加
高级自定义查询、分页、多表联合存储过程
SQL Server数据库下教你如何做导库SQL
常用的 MSSQL Server 数据修复命令
SQL存储过程初探
SQL Server存储过程编写经验和优化
卸载SQL Server2000后不能再次安装的问题解决方法
教你安装SQL Server 2005示例数据库
MySQL 的外键与参照完整性: Part 1
SQL Server安装:"安装文件配置服务器失败"的解决方法
SQL Server 数据库文件存放在何处

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 48 ::
收藏到网摘: n/a

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

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

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

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

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%,则意味着服务器将会去硬盘那里恢复数据页面,这可能是服务器需要更多内存的信号。

如果你为了同样的目的,准备运行上面的查询,并将得到的结果与运行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)

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