部分具有统计功能的TSQL语句(例如DBCC语句,全局函数,系统存储过程)

这些功能也能帮助用户了解和监控SQLSERVER的运行情况

DBCC语句,DBCC语句是SQL2005的数据库控制台命令

DBCC语句不仅能检查数据库的性能和活动,还能检查数据库的物理和逻辑一致性

许多DBCC语句能够对检测到的问题进行修复,例如

 1、DBCC CHECKTABLE
--检查组成表或索引视图的所有页和结构的完整性
--例如,检查AdventureWorks数据库中的HumanResources.Employee表的数据页完整性
--请执行
USE [AdventureWorks]
GO
DBCC CHECKTABLE('HumanResources.Employee')
--如果发现有错误可以运行下面这句尝试修复
DBCC CHECKTABLE('HumanResources.Employee',REPAIR_ALLOW_DATA_LOSS)

当使用DBCC 语句验证表、数据库文件甚至整个数据库的完整性时,如果报告了任何错误,可以重新执行DBCC命令,并且使用REPAIR_ALLOW_DATA_LOSS 参数尝试修复

报告的所有错误,但是这些修复可能会导致某些数据丢失

论坛上有一个帖子句出现这个情况

http://social.technet.microsoft.com/Forums/zh-CN/a0774905-2353-46ad-981c-695f280c2472/sql-server2000-select-823-2421-

安装SQL Server 2000的服务器有次突然宕机了,重启后select *查询某张表时出现报错信息“服务器:消息 823,级别 24,状态2,行1”,

请问该如何解决?现在web应用页面查询报错,无法显示数据。报错服务器:消息 823,级别 24,状态2,行1,连接中断

 --823错误属于硬件错误,这个时候就可以使用下面sql语句修复那一张表
DBCC CHECKTABLE('HumanResources.Employee',REPAIR_ALLOW_DATA_LOSS

2、DBCC CHECKALLOC

DBCC CHECKALLOC将检查数据库中所有页的分配,而不管其所属的页类型或对象类型。他还可以验证各种内部结构,

这些结构可用于跟踪这些页和他们之间的关系

DBCC CHECKALLOC报告了任何错误,建议通过数据库备份来还原数据库,而不是运行修复。如果备份不存在,则运行修复也可纠正报告的错误;

但是,纠正这些错误时可能需要删除某些页,进而删除数据

 DBCC CHECKALLOC('AdventureWorks')
GO

3、DBCC CHECKDB

检查指定数据库中所有对象的分配、结构和逻辑完整性。下面示例将对当前数据库执行DBCC CHECKDB

 DBCC CHECKDB('AdventureWorks')

如果发现有错误,可以尝试使用下面sql语句来修复错误

 ---------------------------------------------------------
--设置单用户模式
ALTER DATABASE [GPOSDB] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
--先使用下面这句
DBCC checkdb([GPOSDB],REPAIR_REBUILD)
--如果上面那句修复不了错误,再使用下面这句
DBCC checkdb([GPOSDB],REPAIR_ALLOW_DATA_LOSS)
--设置多用户模式
ALTER DATABASE [GPOSDB] SET MULTI_USER
GO
-------------------------------------------------------------

运行DBCC CHECKDB命令,相当于依次运行下面DBCC检查语句

(1)对数据库运行DBCC CHECKALLOC

(2)对数据库中的每个表和视图运行DBCC CHECKTABLE

(3)验证数据库中的Service Broker数据

(4)对数据库运行DBCC CHECKCATALOG

(5)验证数据库中每个索引视图的内容

这意味着无须再运行DBCC CHECKTABLE、DBCC CHECKALLOC、DBCC CHECKCATALOG

如果DBCC CHECKDB报告了任何错误,建议从数据看备份还原数据库,而不运行具有repair选项的修复语句。

如果不存在备份,则运行修复将更正报告的错误。 但是,使用REPAIR_ALLOW_DATA_LOSS修复错误可能会导致某些数据丢失

4、DBCC OPENTRAN

显示指定数据库内最早的活动事务和最旧的分布,以及非分布式复制事务相关的信息 ,该语句可以用来查找长时间活动的事务

5、DBCC SQLPERF()

显示自上次SQLSERVER服务器以来的相关统计信息。

 DBCC SQLPERF(LOGSPACE)   --显示所有数据库事务日志的使用情况
DBCC SQLPERF(IOSTATS) --显示磁盘I/O情况
DBCC SQLPERF(NETSTATS) --显示网络的活动情况

全局函数

SQLSERVER提供了多个全局变量来记录系统的状态,全局变量为函数形式,作为全局函数引用

例如:

 SELECT @@MAX_CONNECTIONS  --返回SQLSERVER实例允许同时进行的最大用户连接数

 SELECT @@CONNECTIONS  --显示自上次启动SQLSERVER以来登录或试图登录的次数

 SELECT @@ERROR  --显示TSQL语句的错误代码

 SELECT @@SPID   --显示当前用户的服务器进程标识符id

 SELECT @@PROCID   --显示当前过程的存储过程标识符id

 SELECT @@ROWCOUNT  --显示受上一语句影响的行数

 SELECT @@SERVERNAME  --返回本地SQLSERVER实例名称

 SELECT @@VERSION  --显示SQLSERVER安装日期、版本、处理器类型、Windows操作系统版本号

系统存储过程

下列SQLSERVER系统存储过程可以作为多监视任务的一种功能强大的备选方法。

 EXEC [sys].[sp_monitor]

显示SQLSERVER统计信息,如总的处理事件、读写次数、登录或试图登录SQLSERVER次数

 EXEC [sys].[sp_who] @loginame = NULL -- sysname

报告有关当前SQLSERVER用户和进程的快照信息,包括当前正在执行的语句,以及该语句是否被阻塞[sp_who]结果集将安装spid值升序排序。

如果是并行处理,则会为特定的SPID创建子线程。主线程用spid=xxx和ecid=0标示。其他子线程具有相同的spid=xxx,但ecid>0。

因此,该spid号将有多行返回,而且这些行都放置在该spid在整个列表中的所在处。子线程将随机排列,但父线程除外(ecid=0);

在该spid中,父线程首先列出

 EXEC [sys].[sp_lock]

用来报告数据库中有关锁的信息

各个列的解释

spid:请求锁的进程的数据库进程id spid号

dbid:数据库标识号

objid:对象标识号。可以在相关数据库中使用object_name()函数来标识对象。值为99时是一种特殊情况,表示用于记录数据库中页分配的其中一个系统页的锁

indid:索引的索引标识号

type:锁的类型

resource:标识被锁定的资源的值。值的格式取决于type列标识的资源类型

mode:请求的锁模式

status:锁的请求状态,GRANT表示已获取锁;WAIT表示锁被另一个持有锁(模式相冲突)的进程阻塞;

CNVRT表示锁正在从另一种模式进行转换,但是转换被另一个持有锁(模式相冲突)的进程阻塞

 EXEC [sys].[sp_spaceused] @objname = N'', -- nvarchar(776)
@updateusage = '' -- varchar(5)

显示保留的磁盘空间以及当前数据库中的表、索引视图或Service Broker队列所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间

 EXEC [sys].[sp_help] @objname = N'' -- nvarchar(776)

报告有关数据库对象(syssysobjects兼容视图中列出的所有对象)、用户定义数据类型或SQLSERVER2005提供的数据类型信息

[sp_help]返回的结果集取决于@objname 参数。如果未指定@objname 参数,则[sp_help]将列出当前数据库中所有对象的对象名称、所有者和对象类型。

 --例如:列出有关master数据库中每个对象的信息
USE master
GO
EXEC [sys].[sp_help] --例如:显示有关Person.Contact表的信息
USE [AdventureWorks]
GO
EXEC [sys].[sp_help] @objname = N'Person.Contact' -- nvarchar(776)
GO

如有不对的地方,欢迎大家拍砖o(∩_∩)o

部分具有统计功能的TSQL语句(例如DBCC语句,全局函数,系统存储过程)的更多相关文章

  1. T-SQL 运行时生成语句

    运行时生成语句 1.用EXECUTE执行动态命令 EXECUTE命令可以执行存储过程.函数和动态的字符串命令.注意此语句的作用正如前面在介绍批处理时,如果批中的第一条语句是"EXECUTE存 ...

  2. go语言实战教程之 后台管理页面统计功能开发(2)

    上节内容介绍了后台管理页面统计功能开发(1),从功能介绍,到接口请求分析和归类,最后是代码设计.经过上节内容的介绍,已经将业务逻辑和开发逻辑解释清楚,本节内容侧重于编程代码实现具体的功能. 当日增长数 ...

  3. 如何Windows分页控件中增加统计功能

    在我的博客里面,很多Winform程序里面都用到了分页处理,这样可以不管是在直接访问数据库的场景还是使用网络方式访问WCF服务获取数据,都能获得较好的效率,因此WInform程序里面的分页控件的使用是 ...

  4. atitit. 统计功能框架的最佳实践(1)---- on hibernate criteria

    atitit. 统计功能框架的最佳实践(1)---- on hibernate criteria 1. 关键字 1 2. 统计功能框架普通有有些条件选项...一个日期选项..一个日期类型(日,周,月份 ...

  5. Nginx 的 RTMP 模块的在线统计功能 stat 在 multi-worker 模式下存在 Bug

    < 让你的 Nginx 的 RTMP 直播具有统计某频道在线观看用户数量的功能>一文介绍了 Nginx 的在线统计模块.         我们的在线直播服务使用了 Nginx 的 Rtmp ...

  6. CI Weekly #16 | 从另一个角度看开发效率:flow.ci 数据统计功能上线

    很开心的告诉大家,flow.ci 数据统计功能已正式上线. 进入 flow.ci 控制台,点击「数据分析」按钮,你可以按照时间日期筛选,flow.ci 将多维度地展示「组织与项目」的构建数据指标与模型 ...

  7. 世界上最好的语言搭建短链接及统计功能(附API代码)

    前言 在这个营销的时代,短链接和二维码是企业进行营销中非常重要的工具,不仅仅是缩短了链接,而且还可以通过扩展获得更多的数据,诸如点击数.下载量.来源以及时间等等. 网上搜寻了一下比较有名有U.NU和0 ...

  8. React Native 轻松集成统计功能(Android 篇)

    关于推送的集成请参考这篇文章,本篇文章将引导你集成统计功能,只需要简单的三个步骤就可以集成统计功能. 第一步 安装 在你的项目路径下执行命令: npm install janalytics-react ...

  9. React Native 轻松集成统计功能(iOS 篇)

    最近产品让我加上数据统计功能,刚好极光官方支持数据统计 支持了 React Native 版本 第一步 安装: 在你的项目路径下执行命令: npm install janalytics-react-n ...

随机推荐

  1. C++学习基础五之函数参数——形参

    一.理论部分 C++中函数形参主要分为两类,如图1所示, 图1 总结: 一.当函数参数为非引用形参时,传进函数体内的是实参的拷贝,(注意,对于基本类型而言,拷贝的是实参的值,对于指针而言拷贝的是实参的 ...

  2. git 代码组织

    在20145306CSAPP2E文件夹下建立相应的文件夹: src:存放源代码文件 include: 存放头文件 bin:存放编译后的目标文件.可执行文件等 lib:存放项目所需的静态库.动态(共享) ...

  3. 微信的 JSSDK

    闲来无事,花了几个小时研究了下 微信的 JSSDK. 将学习中所用到的代码都复制到这儿,以后查看的时候方便点. PHP $AppID = ""; //APPID $AppSecre ...

  4. BCB 中测量Richedit 的文本总行高

    RICHEDIT 富文本控件可以容纳各种字体,那么如果我们想要知道文本的总行高如何做呢? 比如,我们想判断,richedit中的文本内容有没有超出richedit 的范围,如何实现呢? 1,需要使用E ...

  5. 用tcc遇到的一个大坑

    在centos6.5 x86_64服务器上编译安装完tcc, 版本0.9.25(在github上clone的),似乎一切正常 但当用tcc来编译"hello, world"程序时, ...

  6. IconFont字体制作

    1. 第一步.准备svg格式图片 2. 登陆http://iconfont.cn/网站,上传图标. 3. 选中需要制作成iconfont的图标. 4. 将选中的图标转储为项目 5. 下载至本地. 6. ...

  7. 关于Eclipse项目中加入jquery.js文件报错(missing semicolon)问题

    在使用Eclipse3.7及以后的版本的时候,加入jQuery文件会报错(missing semicolon),文件中会显示红色小X,虽然这个错误并不会影响项目的运行,但是这个却会大大的影响到开发人员 ...

  8. make file

    CPPUTEST_USE_EXTENSIONS = Y如果没有这一句定义,CppUTestExt/MockSupport.h和CppUTestExt/MockSupport_c.h文件中的定义就不能用 ...

  9. linux-curl restful接口测试结果格式化

    最近在做restful api, 因为服务器不能直接访问, 所以测试只能通过ScureCRT 在一台linux 上curl. 但是返回结果很多的时候, 发现:草, 这个数据怎么都是乱码? 一大堆数据, ...

  10. Groovy basic

    1. print println "Hello Groovy!" you can use java in Groovy System.out.println("Hello ...