


版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SQLServer2000常见系统错误第一章启动与配置1、剖析事件查看器,将应用程序中的所有事件清除序号内容说明117052:MicrosoftSQLServer2000-8.00.2039(IntelX86)May3200523:18:38Copyright(c)1988-2003MicrosoftCorporationDeveloperEditiononWindowsNT5.1(Build2600:ServicePack2)SQLServer的版本信息,安装环境的操作系统版本。217104:服务器进程ID是2828。分配的服务器进程ID3此SQLServer实例最近于2007-9-110:
2、38:00(本地)2007-9-12:38:00(UTC)报告使用的进程ID是3360。SQLServer2000实例上次运行使用的进程ID417162:SQLServer正在以优先级high”(已检测到1CPU)启动。SQLServer安装在1个CPU的服务器上,以高优先级开始启动。517124:已为thread模式处理而配置了SQLServer。SQLServer2000的CPU配置为线程模式。617125:使用dynamic锁分配。2500锁块,5000锁所有者块。为SQLServer2000分配的锁信息。717834:正在使用SSNETLIB.DLL'版本8.0.2039”。启
3、用默认的由SSNETLIB.DLL文件封装的网络库超级套接字,封闭了TCP/IP协议和NwlinkIPX/SPX两种通信协议。819013:SQLServer正在监听192.168.1.8:1433。19013:SQLServer正在监听219.140.27.21:1433。19013:SQLServer正在监听127.0.0.1:1433。可以使用本地TCP/IP连接9SuperSocket信息:(SpnRegister):Error1355。提"法注赚级套接字网络库的提示信息,这和使用的协议有关。1019013:SQLServer正在监听TCP,SharedMemory,Name
4、dPipes。SQLServer实例配置了TCP/IP、共享内存和命名管道3种协议。1117126:SQLServer已准备好进行客户端连接可以接受客户机的请求1217052:恢复完成。正常完成启动过程。2、SQLServer服务器一一错误日志错误日志是SQLServer2000服务器中记录服务器级信息的文件。当SQLServer启动、关闭和发生系统级错误时,SQLServer会白动记录有关信息。查看错误日志:C:ProgramFiles'MicrosoftSQLServerMSSQLLOGBa2EOJ-O9-0116151入93server将SQLEerirer俏.&己录在立
5、件,SC:-PrograiiFiIesVNicrcsoftSQLSErwiAIISSQLMo日.ESWKUOG*中12(07-09-01L6:IS:1A902CO7-D&-01(6:15:19M2COT-ra-OlLG:15:1人.932CO1-M-H1LG:I5:1<1902CET-M-01LG:IE:1<1922001-09-01LE-:15:20.12SDDT-09-01LG:15:20.120DDT-O9-O1LE-:15:20.143007-03-01te:15:20.IS2OO7-OB-01te;lE:30.212CO7-O9-01te;IE:20.<2幻
6、07-08-01L6:IE:20.*22C07-09-01te:IS:S0.422007-09-016;15:30.433007-09-01te;15:30.452007-09-016;15:30,45幻01-09-01IX;巧;2)®EOIT-Q9-Q1L6;15;aOs32S00T-09-Q116:15:20.51EC0T-09-Q1L6;I5;30.51ZCOT-O9-01L6;I5;30.532C0T-Q9-Q1Le-;I5;3O.T12COT-09-Q1L&I5ZL12ZCOT-D3016;I5;ZL.1SZOIT-ra-OI&;I5;ZL.ISZOJT-D
7、9-016;15:36.9&EfInzirEfIrwirEtirizirzarvArserverserver印i期邛id35?nrifcrijiiA5serverserverserver科id?serverspidIOjjpidSzpi羽刃i胡刊服羯器匡程ID呈4022.健菩撕右利tiI.Ccippr-igKt(OLCSB2002WLcyotoftCorpor-itim.INieretoftSQLEkiz.ir2QJ0fi.00.2139(TintiI1SEJ.£P号*僧-kigKs(已检侧黄If1僚n启动.已a曲沁精式坯淮rfI配置了泌皿心.便期v1r5"迹分肚K
8、G30111块,K0CO领胃奇有首块.尝减初皓化甘杓式李憨药调flPuIed.tc>>Iit-a.Liirrans4c-ILcnDi=p*iL=:erIxL-ttrfixce:XAET_AKA|MBDTAyjJIL.AELZ启动数据库"maZ严"服务密名前昱'*EiriM41)3200X4341:1“正在便臣?口,岛HETLZm-DLJ/1版*-B.0.233人*.启动数施库t(?iJ.55P启动数据库“nAd中?£事正在曲听2TQ.QU1133ASQLferverFE1E听E侔.1KL出.E吨:1<3亦3qLAtrvs-正在匾昕192.
9、1&0.1.6:1433-启动数据库m讪言平?3qLs岂已堆备事干进可容户端找胡匚Serrer正在遢昕TCfAStarednemery,VaneIripes?启励数据库“的讪:1)旷n躺数培库?启励数据库“疑吓dtT-SQLsIabsIcountercoIIecIiontaskiscreatiid.护用"EtUdIT俩本'ZOCCW.:036J来如"护祈?诂过寿stAeAv*rsiA口总结SQLServer启动的过程SQLServer数据库系统数据故障数据库信息结论Master17052:MicrosoftSQLServer2000-8.00.2039(In
10、telX86)May3200523:18:38Copyright(c)1988-2003MicrosoftCorporationDeveloperEditiononWindowsNT5.1(Build2600:ServicePack2);17104:服务器进程ID是284;此SQLServer实例最近于2007-9-116:43:19(本地)2007-9-18:43:19(UTC)报告使用的进程ID是3752;17113:initconfig:打开C:ProgramFiles'MicrosoftSQLServerMSSQLdatamaster.mdf"以获取配置信息时出错2(
11、系rSQLServer实例的启动过程将停留在仅仅由操作系统分配进程ID阶段。Model17126:SQLServer已准备好进行客户端连接如果master数据库正常,而model数据库不存在或有故障,SQLServer实例的启动过程将完成CPU、内存和网络库的初始化,但model数据库的故障仍将导致客户机无法正常连接。tempdb成功启动SQLServer实例。女口果master正常,model正常,不论有没有tempdb,SQLServer实例都将重建tempdb。msdbSQLAGENT.1Msdb数据库存在与否仅影响SQLServerAgent服务,和SQLServer服务没有什么关系。
12、文本内容:2007-09-0116:59:30-?393正在等待SQLServer恢复数据库2007-09-0116:59:38-?131由于来白用户、进程或操作系统的停止请求,SQLSERVERAGENT服务停止2007-09-0116:59:39-?098SQLServerAgent已终止(正常)Master系统数据库对于SQLServer实例至关重要,是管理实例和所有数据库的数据库;Model系统数据库是系统创建所有数据库的模板。当发出createdatabase语句时,新数据库的第一部分通过复制model数据库中的内容创建,剩余部分由空页填充。由于SQLServer每次启动时都要创建t
13、empdb数据库,model数据库必须一直存在于SQLServer系统中。Tempdb数据库存在与否不影响实例的正常启动。Msdb数据库。影响SQLServerAgent服务正常启动。windows操作系统将为SQLServer服务器上的每个服务分配一个进程ID。SQLServer服务的启动信息记录在ERRORLOG文件中。SQLServerAgent服务的启动信息记录在SQLAGENT文件中。重建master数据库1、在重建master数据库之前,需要准备好SQLServer2000的安装光盘。2、重建主控实用工具:C:ProgramFiles'MicrosoftSQLServer8
14、0ToolsBinnrebuildm.exe单用户模式启动1、单用户模式就是同一时刻仅允许一个DBA用户对SQLServer实例进行操作,如果要恢复已经损坏的master数据库,则必须要启动SQLServer实例的单用户模式。2、什么情况下切换到单用户模式常见的情况包括:更改服务器的配置参数;重建已经损坏的master数据库;修复其他系统数据库;3、如何启动C:ProgramFilesMicrosoftSQLServer80ToolsBinn目录下有管理SQLServer实例服务的命令文件sqlservr,带参数-c-m就表示以单用户模式启动默认实例。配置SQLServer网络SQLServe
15、r2000基于网络提供服务。1、IPCIPC:即进程间通信机制。SQLServer2000采用了客户机-服务器的体系结构,即使在物理上的同一台计算机上安装的SQLServer2000,也好像是逻辑上的两台计算机。客户机上启用的客户机进程,服务器上启用的是服务器进程。2、IPC的组成一个IPC包括以下的两个组成部分。通信协议:通信协议定义了利用IPC通信的两个进程之间传递的数据分组格式。API:应用编程接口,是一组定义好的函数,应用程序通过这些函数来使用IPC机制,发出命令并反馈结果。3、Net-LibraryNet-Library,网络库。网络库是以动态链接库DLL形式实现的IPC机制。网络库
16、不是简单的通信协议,而是通信协议和IPC机制组合的结果。DLLDLL的另外一个突出特点是动态加载,即虽然在一个主程序中调用了DLL文件中的函数,但主程序的代码中并不复制DLL文件中的函数,而是在运行时才动态加载这些函数。避免了将大量重复的函数代码复制到主程序中,在运行时同样需要大量占用内存空间的问题。相对于静态加载技术而言,DLL的动态加载就更能有效节省内存空间。DLL技术的突出特点是代码重用和节省空间。网络库DLL网络库以DLL形式出现,也就是指一些特殊的DLL文件是包含了实现网络通信的、可以重用的函数和代码。查看网络库DLL服务器网络实用工具、客户端网络实用工具网络库和通信协议的关系一个网
17、络库DLL文件并不一定仅封装一种网络协议的函数,也可能封装多种网络协议。比如:SSNETLIB.DLL网络库文件实际上就封装了TCP/IP和IPX/SPX两种网络协议。1、配置共享内存网络(1) 启用SQL服务器网络实用工具,常规选项卡。在启用的协议列表框中清除所有协议即可。(2) 重新启动SQLServer2000服务器,服务器上的共享内存协议才能够启动。(3) 启用SQLServer客户端网络实用工具,常规选项卡中,在按顺序启用协议列表框中清除所有的协议。选择启用共享内存协议复选框。2、配置TCP/IP网络(1)配置服务器:SQLServer网络实用工具,常规选项中,将修改默认端口号;TC
18、P/IP添加启用的协议列表框。点击属性可配置客户机:SQLServer客户端网络实用工具,常规选项中,将TCP/IP添加到按顺序启用协议列表框中;在别名选项卡,单击添加,在服务器别名文本框中输入mysqlserver,选网络库中的TCP/IP:单选按钮,服务器名称文本框输入SQLServer2000服务器的IP地址192.168.1.8,取消对动态决定端口复选框的选择,在端口号文本框核实SQLServer2000服务器的端口。TDS协议TDS译为表格格式数据流协议,就是SQLServer2000的客户机和服务器之间的应用层协议。TDS的作用应用程序的数据必须通过TDS协议的封装,然后交由传输层
19、的协议,经过层层封装之后才能在网络上传输。TDS的作用主要包括:创建到SQLServer服务器的连接;请求数据和服务器的状态;接收数据、状态、错误信息和其他服务器结果;完成存储过程的执行;顺序关闭连接;TDS的结构:SQLServer2000使用TDS8.0协议,其数据报(网络上传输的一个数据单元,也称为数据包)包括两个部分:TDS报头和TDS数据。第二章未公开的DBCC命令DBCC(DataBaseConsoleCommand):数据库控制台命令;(1)dbccpage命令参数查询dbid和dbnameselectname,dbidfromsysdatabases查询filenum和page
20、numselectfileid,size,filenamefromsysfilesfileid:即FILENUMsize:某个数据文件或日志文件已经分配的数据页面总数,编号从0开始filename:数据文件和日志文件的物理存储路径;dbccpage作用可以直接查看某个数据页面的内容。可查看到数据库的物理存储情况。dbccpage(dbid|dbname,filenum,pagenum)dbccpage(dbid|dbname,filenum,pagenum,printoption)filenum:数据文件的编号pagenum:数据页面文件的编号printoption:如何输出结果,0,1,2,
21、3dbcclogDbcclog作用是查看某个数据库使用的事务日志信息。Dbcclog(dbid|dbname,type=-1|0|1|2|3|4)参数取值参数说明0输出最小的信息(操作、上下文、事务D1操作、上下文、事务ID、标记、标签、行长度、描述2操作、上下文、事务ID、标记、标签、行长度、描述、对象名称、索引名称、数据页面ID3每个操作的完整信息4每个操作的完整信息,十六进制的日志行数据-1每个操作的完整信息,十六进制的日志行数据、检查点开始、数据库版本等。(2) dbccerrorlog作用是初始化SQLServer的错误日志文件的内容。等同于:sp_cycle_errorlogsp_
22、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固定服务器角色的成员(3
23、) dbccflushprocindb(DBID)Dbccflushprocindb命令用于清除SQLServer2000服务器上某个数据库在缓存中的存储过程,实际上就是清除缓存中的存储过程的执行计划。该命令常在需要对存储过程的性能进行测试时使用,一般不要在生产数据库上执行该命令,否则将影响正在运行的应用程序的性能。dbcctraceon(3604)godeclareintDBIDintegersetintDBID=(selectdbidfromsysdatabaseswherename='northwind')dbccflushprocindb(intdbid)go(5)db
24、ccbufferDbccbuffer命令显示缓冲区的头部信息和页面信息。Dbccbuffer(DBID|dbname,objid|objname,nbufs,printopt)参数参数说明DBID数据库的唯一ID。DBName数据库的名称。OBJID数据转t象的IDOBJNAME数据对象的名称NBUFS检查的缓冲区数量。>0按照MRU(最近最常使用算法)=0所有的缓冲区按照MRU至LRU顺序显示<0按照LRU到MRU顺序显示PRINTOPT输出信息选择。0:默认设置,输出缓冲区头部和页面头部1:输出页面每行的数据和行偏移数组;2:将母行作为一个整体输出,输出行偏移数组;将显示所有数
25、据库在内存中的缓冲情况。Dbcctraceon(3604)GoDbccbufferGo(6) dbccdbinfoDbccdbinfo命令用于显示特定的数据库结构Dbccdbinfo(dbname)dbcctraceon(3604)godbccdbinfo(master)go(7) dbccdbtable用于显示管理数据库的表(数据字典)的信息。Dbccdbtable(dbid|dbname)dbcctraceon(3604)godbccdbtable(master)go(8)dbccindDbccind命令用于显示特定表的所有索引页面信息Dbccind(DBID,objid,printopt
26、)参数参数说明DBID数据库的唯一IDOBJID数据对象的IDPRINTOPT输出信息选项。0:默认设置,输出缓冲区中的页头部和数据贞头部信息;1 :输出页头、以行格式输出页数据,偏移表;2 :输出页头、非格式化的页数据、偏移表;dbcctraceon(3604)godbccind(master,sysobjects,0)go(9)dbccprocbufDbccprocbuf命令用于显示过程缓冲区中缓冲区头部和存储过程头。Dbccprocbuf(dbid|dbname,objid|objname,nbufs,printopt)参数参数说明DBID数据库的唯一IDDBNAME数据库名称OBJID
27、数据对象的IDOBJNAME数据对象的名称NBUFS输出的缓冲区的数目PRINTOPT输出信息选项。0:默认设置,输出过程缓冲区和过程头;1:输出过程缓冲区、过程头和缓冲区内谷;dbcctraceon(3604)godbccprocbuf(master,'sp_help',1,0)go(10)dbccprtipageDbccprtipage命令用输出某个索引页面的每行指向的页面号。Dbccprtipage(DBID,OBJID,INDEXID,INDEXPAGE)参数参数说明DBID数据库的唯一IDOBJID数据对象的IDINDEXID索引对象的IDINDEXPAGE索引顶面的
28、逻辑顶面号码dbcctraceon(3604)godeclaredbidint,objectidintselectdbid=db_id('master')selectobjectid=object_id('sysobjects')dbccprtipage(dbid,objectid,1,0)go(11)dbccpssDbccpss用于显示当前连接到SQLServer2000服务器的进程信息。dbccpss(suid,spid,printopt)参数参数说明SUID服务器用户IDSPID服务器进程IDPRINTOPT输出信息选项0:标准输出1 :输出所有打开的DE
29、S(标识符)和当前序列树2 :将进程拥有的锁信息输出到错误日志中;获取administrator用户系统进程ID为53的SQLServer进程信息dbcctraceon(3604)godbccpss(administrator,53,0)go(12) dbccresourceDbccresource用于显示服务器当前使用的资源情况dbcctraceon(3604)godbccresourcego(13) dbcctabDbcctab用于显示设定的表的所有数据页面的内容。Dbcctab(DBID,OBJID,PRINTOPT)参数说明DBID数据库的IDOBJIDPRINTOPT数据对象的ID输
30、出信息选项0:显示页头部;1 :按照行偏移表显示每行;2 :按照整体显示页面和偏移表;dbcctraceon(3604)godeclaredbidint,objectidintselectdbid=db_id('master')selectobjectid=object_id('sysindexes')dbcctab(dbid,objectid)go(14)dbccbufcountdbccbufcount命令用于显示最长的内存Hash桶的链表长度及平均链表长度,最多显示10个Dbccbufcount(n_chains)n_chains参数,表示hash桶的数目,
31、最多只能显示10个Bucketnumber:内存中Hash桶号;Chainsize:桶中数据链表的长度;AverageChainSize:内存中所有链表的平均长度;dbcctraceon(3604)godbccbufcount(10)go(15) dbccdbrecover(Suspect)状态的数据库。Dbccdbrecover命令用于在不重启服务器的情况下恢复处于"质疑"Dbcctraceon(3604)GoDbccdbrecover(northwind)Go(16) dbccdesDbccdes输出特定的标志符信息。Dbccdes(dbid,objid)Dbcctra
32、ceon(3604)GoDbccdes(master,sysindexes)Go(17) dbccmemusageDbccmemusage命令用于显示服务器内存使用的细节信息。dbcctraceon(3604)godbccmemusagegoINDEXID:索引ID;BUFFERS:所分配的缓冲区数量。DIRTY:是否为脏数据,即已经被修改过,需要写到硬盘上的数据。(18)dbccpglinkageDbccpglinkage命令用于查看某个数据库数据页面的链接,还可以完成完整性检查。Dbccpglinkage(dbid,fileid,start,number,printopt=0|1|2)参数
33、参数说明Dbid数据库IDFILEID数据文件IDSTART开始查看的数据页面逻辑编号NUMBER检查的页面数量PRINTOPT输出信息选项。0:仅显示扫描的页面数;1:显示最后扫描的16个顶面的信息;2:显示扫描的所有页数;100的页面开始,共3个页面的实例将扫描从dbid为1(master数据库)的第1个数据文件的页号为数据对象的链接情况,显示扫描的所有页数。dbcctraceon(3604)godbccpglinkage(1,1,100,3,1)godbcccachestatsDbcccachestats用于查看SQLServer实例的内存统计信息。dbcctraceon(3604)go
34、dbcccachestatsgoObjectTypeRatiobjertCountAb暂CosirAvjPaAesT.VObjectConinrt1Froc0.33010528925013336400.3000000003000000-16.97入999993999959602Prepared:d221,04545464艮5454541.1363636363E363e503AdhocD.C120.316e6fid6656566663L916666665666666T0qReplFrocO.C00.00.0p&Trissero.c00.0(.00flCursorU.L21.LI.bu7E
35、itecCat2.4J9DZ4JKUA4jyOZbiE-2JZu.7b4.UdZ5asView0.333330333333333311i.O4.009Dcfaul土0.000.00f00If0.71428571428571430O.Q0.o011SysT筑bn.10in2.fiaonoiODonnonoaoi012CheckO.r0OHO0.0013RuleQ.C00.00.0014Smeary0.2316715G42S219S41190.86554621818T334994.1176470538236290HitRatio:在SQLServer2000的内存中对象的命中率。该值越高,一般情况
36、下越好。ObjectCount:缓存中某种特定类型对象的数量。Avg.Cost:SQLServer2000用于编译计划的代价。SQLServer2000使用该值来决定执行计划是否应该被放入缓存Avg.Page:缓存对象使用的页面平均数。LWObjectCount、LWAvgCost、WLAvgStay、LWAveUse:所有的列都显示了被LazyWriter(懒写)后台进程从Cache中移走的对象。数字越低越好。dbccmemorystatusDbccmemorystatus显示当前状态下SQLServer实例的内存分配的详细情况。dbcctraceon(3604)godbccmemoryst
37、atusgodbccsqlmgrstatsDbccsqlmgrstats命令显示缓存中先读和预先准备的SQL语句dbcctraceon(3604)godbccsqlmgrstatsgoMemoryUsed(8KPages):如果内存页面数量很大,该值表示一些用户连接预读了许多T-SQL语句;NumberCSqlObjects:缓存中T-SQL语句的总数量;NumberFalseHits:SQLServer2000到内存中去查找已经缓存而没有命中的T-SQL语句的值。该值应该尽可能的低。(22)dbcc跟踪标记参数标记说明200查询树的前映像201查询树的后映像260有关扩展存储过程动态链接库(
38、DLL)的版本信息302索引选择信息310连接选择信息317连接选择的全部信息1204返回参与死锁的锁的类型,以及当前受影响的命令。2528通过dbcccheckdb、checkfilegroup、checktable禁用对象的并行检查。3205禁用磁带驱动程序的硬件压缩。3604将跟踪结果输出到屏幕。3605将跟踪结果输出到SQLServer2000的错误日志文件。8602停止索引提示功能8722停止最优化提示功能8755停止锁提示功能。(23)打开跟踪标记dbcctraceon(3604)dbcctraceoff(3604)dbcctracestatus(3604)第三章体系结构1、引擎的
39、工作过程(1) 查询处理“查询处理”部分将用户的SQL命令转换成SQLServer2000能够识别和执行的关系代数操作,同时进行各种优化以提高SQL的执行效率,最后生成具体的执行计划提交给“事务处理”部分。(2) 事务处理“事务处理”部分负责为执行计划生成具体的事务标识,记录事务的信息。然后将做好标识的执行计划传送给“事务调度”部分。(3) 事务调度“事务调度”部分将用户的事务加锁以确保对数据库的操作不会导致错误的结果,然后交给“故障恢复”部分。(4) 故障恢复“故障恢复”部分对数据、日志的操作是在内存中完成的,所以当内存中没有要操作的数据或日志时,就必须调用“内存缓冲管理”部分来将物理数据提
40、取到内存中。(5) 内存缓冲管理“内存缓冲管理”部分管理服务器上为SQLServer2000开辟的内存区,也称为缓冲池。必要的时候调用“存储管理”部分将事务需要的数据从物理文件中读进缓冲池中。(6)存储管理“存储管理”部分位于引擎的底端。完成对硬盘上数据的管理操作后,根据“内存缓冲管理”部分的要求完成数据的读或写操作。2、引擎的内部结构网络库UMS(用户模式调度器)SQLServer2000的引擎包括7个部分(1) 网络接口(2) 线程调度客户机对服务器的访问,以事务为单元执行。随着SMP(对称多处理器)对线程进行了细分,提出了更小的并发资源分配单位轻量级线程纤程(Fiber)。(3) 关系引
41、擎关系引擎完成对SQL命令的语法分析、编译、优化处理、查询执行等功能。它对客户机的查询事务进行处理,向存储引擎请求数据,将处理后的结果反馈给客户机。组成部分功能开放数据服务ODS,管理连接到SQLServer2000服务器的客户机;对失败的连接信息进行清理;向客户机反馈结果、消息和状态信息;协调线程、纤程的产生和结束供UMS使用。解析器对ODS转发的SQL命令进行解析、转换成内部的语法树表达形式,在转换过程中发现并反馈错误信息。编译器对解析器的结果进行编译,生成执行计划。优化器对编译器的执行计划采用基于代价的优化方法进行优化,选择一个合理的执行计划作为最终的执行计划。SQL管理器管理存储过程及
42、执行计划,存储过程由于在创建时已经进行编译,所以保留在内存中可以重复执行,而无须像普通的SQL语句一样每次都进行编译优化,可以提高执行效率。表达式管理器完成对SQL表达式的比较、运算、数据的移动等处理任务。(4) 关系引擎一存储引擎接口关系引擎完成语句的编译和优化,而数据是由存储引擎进行管理的。存储引擎提取的数据最终要送入内存中由关系引擎调度执行。典型select查询语句使用OLEDB接口处理数据。(5) 存储引擎存储引擎完成对硬盘数据的更新和访问。(6) 存储引擎一操作系统接口SQLServer2000的存储引擎归根到底还是调用Windows操作系统提供的底层API来完成存储空间的管理。SQ
43、LServer2000的存储引擎和Windows操作系统的接口称I/O管理器。(7) 操作系统API存储引擎调用WidowsAPI来完成存储空间的分配和管理。纤程与线程:SQLServer实例管理纤程的调度,而操作系统管理线程的调度。线程模式:SQLServer服务器将为每个并发用户创建一个线程。纤程模式:SQLServer服务器为每个CPU分配一个线程,并为每个并发用户创建一个纤程。一个线程中可以有多个纤程,纤程仅仅在线程内部切换,不用上下文切换。提示:SQLServer实例在使用线程或纤程时,使用相同的算法调度和同步任务。SQLServer的个人版和桌面版不支持纤程模式。Windows95
44、/98不支持纤程池的机制。SQLServer可以分配的线程或纤程的最大数目,一般采用默认值255。体系结构配置1、配置SQLServer线程模式SQLServer实例将工作在线程模式。默认为线程模式。2、配置SQLServer纤程模式SQLServer属性处理器选择使用WindowsNT纤程复选框,SQLServer实例将工作在纤程模式。3、提升SQLServer优先级SQLServer属性处理器选择在Windows上提升SQLServer的优先级复选框即可。如果设置为0x1,则为CPU0使用。sp_configure'showadvaneedoptions',1gorecon
45、figuresp_configure'affinitymask',0x2goreconfigurego4、存储结构(1)页面(page)在SQLServer2000数据库的存储结构中,数据文件的存储单位为一个一个标准的页面,其大小为8192Byte。顶面类型说明数据顶面存储除text、ntext和image数据类型外的用户数据。索引顶面存储索引数据文本/图贝面存储text、ntext和image类型的数据全局、共享全局分配映射顶面有关分配的盘区的信息可用空间页面页的可用空间大小索引分配映射表顶面索引使用的盘区的信息大容量更改映射表顶面白上次执仃backuplog语句后大容量操作
46、更改的盘区的信息。差异更改映射表顶面白上次执行backupdatabase语句后更改的盘区的信息。(2)页面结构数据页面头部:96字节保存页面的管理信息。数据区以槽为单位分配存储空间,用于存储数据。数据记录(行)就存储在槽中。Slot)。数据表中的逻辑单位SQL语句操作该行记录时,SQLServer行偏移数组:每个记录占据2字节通过查询行偏移数组的某个槽的偏移量就可以准确定位槽在数据页面中的位置。组成部分说明顶面头部(Header)占据固定的96字节。保存页面的管理信息。数据区(Data)以槽(slot)为单位分配存储空间,用于存储数据。数据记录(行)就存储在槽中行偏移数组(OffsetTab
47、le)表示页面中槽的相对位置。通过查询行偏移数组的某个槽的偏移量就可以准确位糟在数据页面中的位置。槽(Slot):在数据表中,数据横向称为记录。在页面中,存储记录在存储单位为槽(记录,在数据文件就存储在某个页面的某个槽上。当我们使用引擎会到指定的页面和槽上去提取记录的数据。所以每条记录对应的存储单位是一个唯一的v数据文件号,页号槽号(如Page(1:95)Slotl,就表示第1个数据文件的页面号为95的Slotl中),它称为记录RowID(记录标识)。SQLServer2000就可以根据RowID来操作物理的数据。页头部的信息:参数说明Mpageld物理页面的文件号、顶面编号Mevel如果是索
48、引顶面,表示在索引中的级别(叶级顶面为0)M_objId加所属数据对象的ID,可以在sysobjects系统中按照ID进行查询,获得具体所属的数据对象。Mndexid顶面的索引ID(数据顶面0)MprevPage如果顶面处理面链中,表示贝链的上一项面。MnextPage如果顶面处理面链中,表示贝链的卜一项面。Pminlen数据行的固定长部分的字节数MslotCnt页面上已经分配的槽(行)的总数量。MfreeCnt顶面上空闲的数据区大小(字节为单位)MfreeData页面上第一个空闲空间的字节偏移量。MreservedCnt顶面为所有事务保留的字节数Mlsn顶面的LSN(日志序列)号,用于更新或
49、者顶面变化使用。MxactReserved为最近启动的事务保留的字节数。MtornBits每个扇区1bit,用于检测页面的分裂写操作MflagBits2字节的页面的额外信息盘区(Extent)页面是SQLServer2000数据文件的标准存储单位,但并不是数据文件的存储分配单位。SQLServer2000存储分配单位是盘区。每8个页面为1个盘区,盘区的大小为64Kbyte盘区:操作系统分配存储的单位。(3)内存结构SQLServerCache执行代码系统数据结构数据缓冲区日志缓冲区过程缓冲区连接环境缓冲区内存组成部分:1、系统数据结构SQLServer实例的全局数据的数据结构;2、数据缓冲区在
50、内存临时保存数据库的数据,以标准的8KB为单位。3、日志缓冲区在内存中临时保存对数据库的操作产生的日志。4、过程缓冲区在内存中临时保存存储过程、SQL代码的执行计划等。当其他客户机的SQL语句或者存储过程将产生相同的执行计划时,SQLServer引擎将从过程缓冲区中直接调度执行计划执行,由于不需要重新编译生成执行计划,所以以大大提高执行效率。5、连接环境缓冲区在内存中保存客户机的连接池。而不是在客户机断开和服务器的连接后就直接从内存中将连接信息清除。这样下次到达的客户机还可以从内存中使用相同的连接信息连接SQLServer服务器。查看HashBucketdbcctraceon(3604)god
51、bccbufcount(10)go查看Buffer的内容dbcctraceon(3604)godbccbuffergo第四章数据的存储系统表SQLServer2000中的系统表分为两类全局系统表:系统数据库中的系统表,管理服务器级别的信息。数据库的系统表:管理特定的数据库的信息。(1) sysaltfiles:(master)用于存储和管理服务器上的数据文件和日志文件信息。Size即页面数(2) syscacheobjects:(master)存储SQLServer服务器内存的内容。(3) sysdatabases(master)存储SQLServer数据库的内容。(4) sysobjects
52、:存在于每个数据库中,管理该数据库本身的数据对象。Sysobjects系统表保存数据库内创建的每个对象(包括约束、默认值、日志、规则、存储过程等),每个对象用一行来描述。在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在tempdb内,每个临时对象才在该表中占一行。xtypeChar(2)对象类型。可以是下歹U对象类型中的一种:C=CHECK约束D=默认值或DEFAULT约束F=FOREIGNKEY约束L=日志FN=标量函数IF=内嵌表函数P=存储过程PK=PRIMARYKEY约束(类型是K)RF=复制知选存储过程S=系统表TF=表函数TR=触发器U=用户表U
53、Q=UNIQUE约束(类型是K)V=视图X=扩展存储过程(5)sysindexes:管理该数据库的表和索引。Sysindexs系统表保存数据库的表和索引这两类对象。数据库的数据数据库状态值的奥秘Master:24Model:1073741840Msdb:24Northwind:28Pubs:24Tempdb:8状态位,其中某些状态位可由用户使用sp_dboption(readonly、dbouseonly、singleuser等)进行设置:1=autoclose;白动关闭4=selectinto/bulkcopy;8=trunc.logonchkpt;数据库设置在简单恢复模式16=tornpa
54、gedetection,残缺页检测32=loading。正在装载64=prerecovery。准备恢复128=recovering。正在恢复256=notrecovered。没有恢复512=offline;脱机1024=readonly;只读2048=dbouseonly;仅仅dbo使用4096=singleuser;单用户32768=emergencymode。紧急模式4194304=autoshrink。白动收缩1073741824=cleanlyshutdown。干净关闭查询数据库盘区数dbcctraceon(3604)godbccextentinfo(pubs)gopg_alloc字段:该盘区为数据库分配的页面数据量m(1<=m<=8)查询到的盘区信息是数据库数据文件的盘区信息,日志文件不以盘区为单位。查询到的所有盘区数量:84查询到的所有盘区给该数据库分配的页面数:89数据文件的数据企业管理器数据库选中数据库所有任务收缩数据库-D:指出master数据库主要数据文件的路径和文件名;-L:指出master数据库日志文件的路
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 象棋班课件教学课件
- 谢建新汽车构造课件
- 2025版外籍项目经理项目合作合同范本
- 2025版企业年会导演聘用合同
- 2025房地产合伙人合同:房地产大数据分析合作协议
- 2025年信息技术产品全国分销授权合同
- 2025年度石材工程承包与监理服务合同
- 2025年度房屋买卖合同纠纷解决条款范本
- 2025年度城市规划调整项目房屋拆迁补偿购房合同
- 2025年别墅吊顶定制与施工一体化合同
- 中级注册安全工程师《法律法规》试题及答案
- 2025年汽车转向系统行业需求分析及创新策略研究报告
- 2025年四川省成都市高新区事业单位招聘考试综合类面试真题模拟试卷
- GB/T 7251.10-2025低压成套开关设备和控制设备第10部分:规定成套设备的指南
- 2025年秋统编版语文二年级上册全册课件(课标版)
- 七下期末人教版数学试卷
- 2025新疆巴音郭楞州和硕县面向社会招聘社区工作者7人笔试参考题库附答案解析
- 2025年六安市裕安区石婆店镇公开招考村级后备干部8名笔试备考试题及答案解析
- 2025年事业单位考试题库及参考答案
- 2025年公安机关人民警察(基本级)执法资格等级题库及答案
- 物流客服培训课件
评论
0/150
提交评论