SQLServer常见系统错误.docx

上传人:b****2 文档编号:18600672 上传时间:2023-08-20 格式:DOCX 页数:62 大小:199.49KB
下载 相关 举报
SQLServer常见系统错误.docx_第1页
第1页 / 共62页
SQLServer常见系统错误.docx_第2页
第2页 / 共62页
SQLServer常见系统错误.docx_第3页
第3页 / 共62页
SQLServer常见系统错误.docx_第4页
第4页 / 共62页
SQLServer常见系统错误.docx_第5页
第5页 / 共62页
SQLServer常见系统错误.docx_第6页
第6页 / 共62页
SQLServer常见系统错误.docx_第7页
第7页 / 共62页
SQLServer常见系统错误.docx_第8页
第8页 / 共62页
SQLServer常见系统错误.docx_第9页
第9页 / 共62页
SQLServer常见系统错误.docx_第10页
第10页 / 共62页
SQLServer常见系统错误.docx_第11页
第11页 / 共62页
SQLServer常见系统错误.docx_第12页
第12页 / 共62页
SQLServer常见系统错误.docx_第13页
第13页 / 共62页
SQLServer常见系统错误.docx_第14页
第14页 / 共62页
SQLServer常见系统错误.docx_第15页
第15页 / 共62页
SQLServer常见系统错误.docx_第16页
第16页 / 共62页
SQLServer常见系统错误.docx_第17页
第17页 / 共62页
SQLServer常见系统错误.docx_第18页
第18页 / 共62页
SQLServer常见系统错误.docx_第19页
第19页 / 共62页
SQLServer常见系统错误.docx_第20页
第20页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

SQLServer常见系统错误.docx

《SQLServer常见系统错误.docx》由会员分享,可在线阅读,更多相关《SQLServer常见系统错误.docx(62页珍藏版)》请在冰点文库上搜索。

SQLServer常见系统错误.docx

SQLServer常见系统错误

SQLServer2000常见系统错误

第一章启动与配置

1、剖析事件查看器,将应用程序中的所有事件清除,

序号

内容

说明

1

17052:

MicrosoftSQLServer2000-8.00.2039(IntelX86)

May3200523:

18:

38

Copyright(c)1988-2003MicrosoftCorporation

DeveloperEditiononWindowsNT5.1(Build2600:

ServicePack2)

SQLServer的版本信息,安装环境的操作系统版本。

2

17104:

服务器进程ID是2828。

分配的服务器进程ID

3

此SQLServer实例最近于2007-9-110:

38:

00(本地)2007-9-12:

38:

00(UTC)报告使用的进程ID是3360。

SQLServer2000实例上一次运行使用的进程ID

4

17162:

SQLServer正在以优先级“high”(已检测到1CPU)启动。

SQLServer安装在1个CPU的服务器上,以高优先级开始启动。

5

17124:

已为thread模式处理而配置了SQLServer。

SQLServer2000的CPU配置为线程模式。

6

17125:

使用dynamic锁分配。

[2500]锁块,[5000]锁所有者块。

为SQLServer2000分配的锁信息。

7

17834:

正在使用“SSNETLIB.DLL”版本“8.0.2039”。

启用默认的由SSNETLIB.DLL文件封装的网络库超级套接字,封闭了TCP/IP协议和NwlinkIPX/SPX两种通信协议。

8

19013:

SQLServer正在监听192.168.1.8:

1433。

19013:

SQLServer正在监听219.140.27.21:

1433。

19013:

SQLServer正在监听127.0.0.1:

1433。

可以使用本地TCP/IP连接

9

SuperSocket信息:

(SpnRegister):

Error1355。

提示无法注册超级套接字网络库的提示信息,这和使用的协议有关。

10

19013:

SQLServer正在监听TCP,SharedMemory,NamedPipes。

SQLServer实例配置了TCP/IP、共享内存和命名管道3种协议。

11

17126:

SQLServer已准备好进行客户端连接

可以接受客户机的请求

12

17052:

恢复完成。

正常完成启动过程。

2、SQLServer服务器——错误日志

错误日志是SQLServer2000服务器中记录服务器级信息的文件。

当SQLServer启动、关闭和发生系统级错误时,SQLServer会自动记录有关信息。

查看错误日志:

C:

\ProgramFiles\MicrosoftSQLServer\MSSQL\LOG

总结SQLServer启动的过程

操作系统为实例分配进程ID

OS为实例分配CPU和优先级

OS为实例分配CPU使用模式

操作系统为实例分配内存

启动系统数据库master

启动网络库

启动系统数据库Model

如果非正常关闭数据库,则恢复

启动系统msdb及用户数据库

按照配置的网络协议进行监听

清除系统数据库tempdb后重启

成功启动

SQLServer数据库系统数据故障

数据库

信息

结论

Master

17052:

MicrosoftSQLServer2000-8.00.2039(IntelX86)

May3200523:

18:

38

Copyright(c)1988-2003MicrosoftCorporation

DeveloperEditiononWindowsNT5.1(Build2600:

ServicePack2);

17104:

服务器进程ID是284;

此SQLServer实例最近于2007-9-116:

43:

19(本地)2007-9-18:

43:

19(UTC)报告使用的进程ID是3752;

17113:

initconfig:

打开“C:

\ProgramFiles\MicrosoftSQLServer\MSSQL\data\master.mdf”以获取配置信息时出错2(系统找不到指定的文件。

);

SQLServer实例的启动过程将停留在仅仅由操作系统分配进程ID阶段。

Model

……17126:

SQLServer已准备好进行客户端连接

如果master数据库正常,而model数据库不存在或有故障,SQLServer实例的启动过程将完成CPU、内存和网络库的初始化,但model数据库的故障仍将导致客户机无法正常连接。

tempdb

成功启动SQLServer实例。

如果master正常,model正常,不论有没有tempdb,SQLServer实例都将重建tempdb。

msdb

C:

\ProgramFiles\MicrosoftSQLServer\MSSQL\LOG\SQLAGENT.1

文本内容:

2007-09-0116:

59:

30-?

[393]正在等待SQLServer恢复数据库...

2007-09-0116:

59:

38-?

[131]由于来自用户、进程或操作系统的停止请求,SQLSERVERAGENT服务停止...

2007-09-0116:

59:

39-?

[098]SQLServerAgent已终止(正常)

Msdb数据库存在与否仅影响SQLServerAgent服务,和SQLServer服务没有什么关系。

Master系统数据库对于SQLServer实例至关重要,是管理实例和所有数据库的数据库;

Model系统数据库是系统创建所有数据库的模板。

当发出createdatabase语句时,新数据库的第一部分通过复制model数据库中的内容创建,剩余部分由空页填充。

由于SQLServer每次启动时都要创建tempdb数据库,model数据库必须一直存在于SQLServer系统中。

Tempdb数据库存在与否不影响实例的正常启动。

Msdb数据库。

影响SQLServerAgent服务正常启动。

windows操作系统将为SQLServer服务器上的每个服务分配一个进程ID。

SQLServer服务的启动信息记录在ERRORLOG文件中。

SQLServerAgent服务的启动信息记录在SQLAGENT文件中。

重建master数据库

1、在重建master数据库之前,需要准备好SQLServer2000的安装光盘。

2、重建主控实用工具:

C:

\ProgramFiles\MicrosoftSQLServer\80\Tools\Binn\rebuildm.exe

单用户模式启动

1、单用户模式就是同一时刻仅允许一个DBA用户对SQLServer实例进行操作,如果要恢复已经损坏的master数据库,则必须要启动SQLServer实例的单用户模式。

2、什么情况下切换到单用户模式

常见的情况包括:

更改服务器的配置参数;

重建已经损坏的master数据库;

修复其他系统数据库;

3、如何启动

C:

\ProgramFiles\MicrosoftSQLServer\80\Tools\Binn目录下有管理SQLServer实例服务的命令文件sqlservr,带参数-c–m就表示以单用户模式启动默认实例。

配置SQLServer网络

SQLServer2000基于网络提供服务。

1、IPC

IPC:

即进程间通信机制。

SQLServer2000采用了客户机-服务器的体系结构,即使在物理上的同一台计算机上安装的SQLServer2000,也好像是逻辑上的两台计算机。

客户机上启用的客户机进程,服务器上启用的是服务器进程。

2、IPC的组成

一个IPC包括以下的两个组成部分。

通信协议:

通信协议定义了利用IPC通信的两个进程之间传递的数据分组格式。

API:

应用编程接口,是一组定义好的函数,应用程序通过这些函数来使用IPC机制,发出命令并反馈结果。

3、Net-Library

Net-Library,网络库。

网络库是以动态链接库DLL形式实现的IPC机制。

网络库不是简单的通信协议,而是通信协议和IPC机制组合的结果。

DLL

DLL的另外一个突出特点是动态加载,即虽然在一个主程序中调用了DLL文件中的函数,但主程序的代码中并不复制DLL文件中的函数,而是在运行时才动态加载这些函数。

避免了将大量重复的函数代码复制到主程序中,在运行时同样需要大量占用内存空间的问题。

相对于静态加载技术而言,DLL的动态加载就更能有效节省内存空间。

DLL技术的突出特点是代码重用和节省空间。

网络库DLL

网络库以DLL形式出现,也就是指一些特殊的DLL文件是包含了实现网络通信的、可以重用的函数和代码。

查看网络库DLL

服务器网络实用工具、客户端网络实用工具

网络库和通信协议的关系

一个网络库DLL文件并不一定仅封装一种网络协议的函数,也可能封装多种网络协议。

比如:

SSNETLIB.DLL网络库文件实际上就封装了TCP/IP和IPX/SPX两种网络协议。

1、配置共享内存网络

(1)启用SQL服务器网络实用工具,常规选项卡。

在启用的协议列表框中清除所有协议即可。

(2)重新启动SQLServer2000服务器,服务器上的共享内存协议才能够启动。

(3)启用SQLServer客户端网络实用工具,常规选项卡中,在按顺序启用协议列表框中清除所有的协议。

选择启用共享内存协议复选框。

2、配置TCP/IP网络

(1)配置服务器:

SQLServer网络实用工具,常规选项中,将TCP/IP添加启用的协议列表框。

点击属性可修改默认端口号;

(2)配置客户机:

SQLServer客户端网络实用工具,常规选项中,将TCP/IP添加到按顺序启用协议列表框中;在别名选项卡,单击添加,在[服务器别名]文本框中输入mysqlserver,选[网络库]中的[TCP/IP]单选按钮,[服务器名称]文本框输入SQLServer2000服务器的IP地址192.168.1.8,取消对[动态决定端口]复选框的选择,在[端口号]文本框核实SQLServer2000服务器的端口。

TDS协议

TDS译为表格格式数据流协议,就是SQLServer2000的客户机和服务器之间的应用层协议。

TDS的作用

应用程序的数据必须通过TDS协议的封装,然后交由传输层的协议,经过层层封装之后才能在网络上传输。

TDS的作用主要包括:

创建到SQLServer服务器的连接;

请求数据和服务器的状态;

接收数据、状态、错误信息和其他服务器结果;

完成存储过程的执行;

顺序关闭连接;

TDS的结构:

SQLServer2000使用TDS8.0协议,其数据报(网络上传输的一个数据单元,也称为数据包)包括两个部分:

TDS报头和TDS数据。

第二章未公开的DBCC命令

DBCC(DataBaseConsoleCommand):

数据库控制台命令;

(1)dbccpage命令参数

查询dbid和dbname

selectname,dbidfromsysdatabases

查询filenum和pagenum

selectfileid,size,filenamefromsysfiles

fileid:

即FILENUM

size:

某个数据文件或日志文件已经分配的数据页面总数,编号从0开始

filename:

数据文件和日志文件的物理存储路径;

dbccpage作用可以直接查看某个数据页面的内容。

可查看到数据库的物理存储情况。

dbccpage({dbid|dbname},filenum,pagenum)

dbccpage({dbid|dbname},filenum,pagenum,printoption)

filenum:

数据文件的编号

pagenum:

数据页面文件的编号

printoption:

如何输出结果,0,1,2,3

(2)dbcclog

Dbcclog作用是查看某个数据库使用的事务日志信息。

Dbcclog({dbid|dbname},[,type={-1|0|1|2|3|4}])

参数取值

参数说明

0

输出最小的信息(操作、上下文、事务ID)

1

操作、上下文、事务ID、标记、标签、行长度、描述

2

操作、上下文、事务ID、标记、标签、行长度、描述、对象名称、索引名称、数据页面ID

3

每个操作的完整信息

4

每个操作的完整信息,十六进制的日志行数据

-1

每个操作的完整信息,十六进制的日志行数据、检查点开始、数据库版本等。

(3)dbccerrorlog

作用是初始化SQLServer的错误日志文件的内容。

等同于:

sp_cycle_errorlog

sp_cycle_errorlog

关闭当前的错误日志文件,并循环错误日志扩展编号(就像重新启动服务器)。

新错误日志包含版本和版权信息,以及表明新日志已创建的一行。

语法

sp_cycle_errorlog

返回代码值

0(成功)或1(失败)

结果集

注释

每次启动SQLServer时,当前错误日志重新命名为errorlog.1;errorlog.1成为errorlog.2,errorlog.2成为errorlog.3,依次类推。

sp_cycle_errorlog使您得以循环错误日志文件,而不必停止而后再启动服务器。

权限

sp_cycle_errorlog的执行许可权限仅限于sysadmin固定服务器角色的成员

(4)dbccflushprocindb(DBID)

Dbccflushprocindb命令用于清除SQLServer2000服务器上某个数据库在缓存中的存储过程,实际上就是清除缓存中的存储过程的执行计划。

该命令常在需要对存储过程的性能进行测试时使用,一般不要在生产数据库上执行该命令,否则将影响正在运行的应用程序的性能。

dbcctraceon(3604)

go

declare@intDBIDinteger

set@intDBID=(selectdbidfromsysdatabaseswherename='northwind')

dbccflushprocindb(@intdbid)

go

(5)dbccbuffer

Dbccbuffer命令显示缓冲区的头部信息和页面信息。

Dbccbuffer([DBID|dbname][,objid|objname],[,nbufs],[printopt])

参数

参数说明

DBID

数据库的唯一ID。

DBName

数据库的名称。

OBJID

数据库对象的ID

OBJNAME

数据对象的名称

NBUFS

检查的缓冲区数量。

>0按照MRU(最近最常使用算法)

=0所有的缓冲区按照MRU至LRU顺序显示

<0按照LRU到MRU顺序显示

PRINTOPT

输出信息选择。

0:

默认设置,输出缓冲区头部和页面头部

1:

输出页面每行的数据和行偏移数组;

2:

将每行作为一个整体输出,输出行偏移数组;

将显示所有数据库在内存中的缓冲情况。

Dbcctraceon(3604)

Go

Dbccbuffer

Go

(6)dbccdbinfo

Dbccdbinfo命令用于显示特定的数据库结构

Dbccdbinfo(dbname)

dbcctraceon(3604)

go

dbccdbinfo(master)

go

(7)dbccdbtable用于显示管理数据库的表(数据字典)的信息。

Dbccdbtable(dbid|dbname)

dbcctraceon(3604)

go

dbccdbtable(master)

go

(8)dbccind

Dbccind命令用于显示特定表的所有索引页面信息。

Dbccind(DBID,objid,printopt)

参数

参数说明

DBID

数据库的唯一ID

OBJID

数据对象的ID

PRINTOPT

输出信息选项。

0:

默认设置,输出缓冲区中的页头部和数据页头部信息;

1:

输出页头、以行格式输出页数据,偏移表;

2:

输出页头、非格式化的页数据、偏移表;

dbcctraceon(3604)

go

dbccind(master,sysobjects,0)

go

(9)dbccprocbuf

Dbccprocbuf命令用于显示过程缓冲区中缓冲区头部和存储过程头。

Dbccprocbuf([dbid|dbname],[,objid|objname][,nbufs][,printopt])

参数

参数说明

DBID

数据库的唯一ID

DBNAME

数据库名称

OBJID

数据对象的ID

OBJNAME

数据对象的名称

NBUFS

输出的缓冲区的数目

PRINTOPT

输出信息选项。

0:

默认设置,输出过程缓冲区和过程头;

1:

输出过程缓冲区、过程头和缓冲区内容;

dbcctraceon(3604)

go

dbccprocbuf(master,'sp_help',1,0)

go

(10)dbccprtipage

Dbccprtipage命令用输出某个索引页面的每行指向的页面号。

Dbccprtipage(DBID,OBJID,INDEXID,INDEXPAGE)

参数

参数说明

DBID

数据库的唯一ID

OBJID

数据对象的ID

INDEXID

索引对象的ID

INDEXPAGE

索引页面的逻辑页面号码

dbcctraceon(3604)

go

declare@dbidint,@objectidint

select@dbid=db_id('master')

select@objectid=object_id('sysobjects')

dbccprtipage(@dbid,@objectid,1,0)

go

(11)dbccpss

Dbccpss用于显示当前连接到SQLServer2000服务器的进程信息。

dbccpss([suid][,spid][,printopt])

参数

参数说明

SUID

服务器用户ID

SPID

服务器进程ID

PRINTOPT

输出信息选项

0:

标准输出

1:

输出所有打开的DES(标识符)和当前序列树

2:

将进程拥有的锁信息输出到错误日志中;

获取administrator用户系统进程ID为53的SQLServer进程信息。

dbcctraceon(3604)

go

dbccpss(administrator,53,0)

go

(12)dbccresource

Dbccresource用于显示服务器当前使用的资源情况。

dbcctraceon(3604)

go

dbccresource

go

(13)dbcctab

Dbcctab用于显示设定的表的所有数据页面的内容。

Dbcctab(DBID,OBJID,PRINTOPT)

参数

参数说明

DBID

数据库的ID

OBJID

数据对象的ID

PRINTOPT

输出信息选项。

0:

显示页头部;

1:

按照行偏移表显示每行;

2:

按照整体显示页面和偏移表;

dbcctraceon(3604)

go

declare@dbidint,@objectidint

select@dbid=db_id('master')

select@objectid=object_id('sysindexes')

dbcctab(@dbid,@objectid)

go

(14)dbccbufcount

dbccbufcount命令用于显示最长的内存Hash桶的链表长度及平均链表长度,最多显示10个。

Dbccbufcount(n_chains)

n_chains参数,表示hash桶的数目,最多只能显示10个。

Bucketnumber:

内存中Hash桶号;

Chainsize:

桶中数据链表的长度;

AverageChainSize:

内存中所有链表的平均长度;

dbcctraceon(3604)

go

dbccbufcount(10)

go

(15)dbccdbrecover

Dbccdbrecover命令用于在不重启服务器的情况下恢复处于“质疑”(Suspect)状态的数据库。

Dbcctraceon(3604)

Go

Dbccdbrecover(northwind)

Go

(16)dbccdes

Dbccdes输出特定的标志符信息。

Dbccdes[([dbid][,objid])]

Dbcctraceon(3604)

Go

Dbccdes(master,sysindexes)

Go

(17)dbccmemusage

Dbccmemusage命令用于显示服务器内存使用的细节信息。

dbcctraceon(3604)

go

dbccmemusage

go

INDEXID:

索引ID;

BUFFERS:

所分配的缓冲区数量。

DIRTY:

是否为脏数据,即已经被修改过,需要写到硬盘上的数据。

(18)dbccpglinkage

Dbccpglinkage命令用于查看某个数据库数据页面的链接,还可以完成完整性检查。

Dbccpglinkage(dbid,fileid,start,number,printopt={0|1|2})

参数

参数说明

Dbid

数据库ID

FILEID

数据文件ID

START

开始查看的数据页面逻辑编号

NUMBER

检查的页面数量

PRINTOPT

输出信息选项。

0:

仅显示扫描的页面数;

1:

显示最后扫描的16个页面的信息;

2:

显示扫描的所有页数;

实例将扫描从dbid为1(master数据库)的第1个数据文件的页号为100的页面开始,共3个页面的数据对象的链接情况,显示扫描的所有页数。

dbcctraceon(3604)

go

dbccpglinkage(1,1,100,3,1

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2