SQL Server 2012执行和治本实战指南(笔记)——Ch5启动SQL Server服务和数据库

5.开行SQL Server服务同数据库

当数据库及服务启动过程遭到,经常会面出现的问题:

1.SQL Server实例无法正常启动

2.体系数据库无法正常启动

3.大网布局失败

4.用户数据库无法起动

5.集群条件下SQL
Server资源无法保全在线

目录

5.启动SQL Server服务以及数量库…
1

5.1 SQL Server服务启动步骤…
1

5.1.1 从注册表中读取SQL Server启动信息…
1

5.1.2 检查硬件,配置内存和CPU..
2

5.1.3 数据库启动…
3

5.1.4 准备网络…
4

5.2 数据库状态切换…
5

5.2.1 Recovering.
5

5.2.2 Online.
6

5.2.3 RECOVERY
PENDING..
6

5.2.4 SUSPECT.
6

5.2.5 EMERGENCY.
6

5.2.6 RESTORING..
6

5.2.7 Offline.
6

5.3 数据库长时处在RECOVERING状态…
7

5.3.1 多线程并行处理重开与回滚…
7

5.3.2 延迟事务…
7

5.4 数据库无法起动的常见问题…
7

5.4.1 Master数据库不克开行…
7

5.4.2 资源数量库…
7

5.4.3 model数据库…
8

5.4.4 tempdb数据库…
8

5.4.5 用户数据库…
8

5.5 集群环境下,数据库资源不可知ONLINE的宽广问题…
10

 

 

5.1 SQL Server服务启动步骤

5.1.1 从注册表中读取SQL Server启动信息

Sqlservr.exe启动会去注册表中找找好所当实例的注册表信息。这些安排信息寄存于HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL11.X\MSSQLServer下。有几只比较重大之消息:

1.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL11.X\MSSQLServer下,LoginMode:表示是windows验证还是混合验证,Audit Level:设置是否记录用户登录信息。

ACCESS 1

2.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL11.X\MSSQLServer \Parameters下是实例的启动参数

ACCESS 2

3.HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL11.X\MSSQLServer \SuperSocketNetLib下记录了监听的网和访问方式的。

5.1.1.1 启动账号的权位

由要读取注册表信息和SQL Server的资源文件,需要启动服务账号来良足的权柄。那么无法启动实例,甚至并errorlog都无法起动。

好运用Process
Monitor展开监控。如果发现有ACCESS DENIED那么证明有权力问题。

5.1.1.2 日志文件和文件夹访问问题

比方SQL
Server要开动,必须是的创导有日记文件,如果注册表内-e参数指定的不够科学就会见产出报错,无法起动。

5.1.2 检查硬件,配置内存和CPU

对等创建出errorlog之后,所有的起步过程尽管可以从errorlog中扣出来了。

Errorlog先会打印出SQL
Server版本号和Windows版本号,启动参数与过程基本信息:

2014-05-04 14:42:07.05
Server      Microsoft SQL Server 2014 – 12.0.2000.8 (X64)

         Feb 20 2014
20:04:26

         Copyright (c)
Microsoft Corporation

         Enterprise Edition
(64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack
1)

 

2014-05-04 14:42:07.08
Server      UTC adjustment: 8:00

2014-05-04 14:42:07.08
Server      (c) Microsoft Corporation.

2014-05-04 14:42:07.08
Server      All rights reserved.

2014-05-04 14:42:07.08
Server      Server process ID is 4252.

2014-05-04 14:42:07.08
Server      System Manufacturer: ‘System manufacturer’, System Model:
‘System Product Name’.

2014-05-04 14:42:07.09
Server      Authentication mode is MIXED.

2014-05-04 14:42:07.10
Server      Logging SQL Server messages in file ‘C:\Program
Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\Log\ERRORLOG’.

2014-05-04 14:42:07.10
Server      The service account is ‘FanrCo-PC\Administrator’. This is
an informational message; no user action is required.

2014-05-04 14:42:07.10
Server      Registry startup parameters:

          -d C:\Program
Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\master.mdf

          -e C:\Program
Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\Log\ERRORLOG

          -l C:\Program
Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\mastlog.ldf

2014-05-04 14:42:07.10
Server      Command Line Startup Parameters:

          -s
“MSSQLSERVER”

而后还是读取出服务器的布局信息,包括计算机和内存,以及经过的先期级:

2014-05-04 14:42:08.73
Server      SQL Server detected 1 sockets with 2 cores per socket and 2
logical processors per socket, 2 total logical processors; using 2
logical processors based on SQL Server licensing. This is an
informational message; no user action is required.

2014-05-04 14:42:08.73
Server      SQL Server is starting at normal priority base (=7). This is
an informational message only. No user action is required.

2014-05-04 14:42:08.73
Server      Detected 3838 MB of RAM. This is an informational message;
no user action is required.

2014-05-04 14:42:08.76
Server      Using conventional memory in the memory manager.

此后会显示NUMA信息以及lock的信息,或为每个节点分配2500单锁块,5000只锁拥有者

专注,在32bit系统下,每个锁块需要64字节,锁拥有者32字节,64bit下,锁块96字节,锁拥有者56单字节:

2014-05-04 14:42:10.38
Server      Node configuration: node 0: CPU mask: 0x0000000000000003:0
Active CPU mask: 0x0000000000000003:0. This message provides a
description of the NUMA configuration for this computer. This is an
informational message only. No user action is required.

2014-05-04 14:42:10.40
Server      Using dynamic lock allocation.  Initial allocation of 2500
Lock blocks and 5000 Lock Owner blocks per node.  This is an
informational message only.  No user action is required.

显示CLR版本信息和默认TRACE的启:

2014-05-04 14:42:11.33
Server      CLR version v4.0.30319 loaded.

2014-05-04 14:42:12.44
spid8s      Resource governor reconfiguration succeeded.

2014-05-04 14:42:12.49
spid8s      SQL Server Audit is starting the audits. This is an
informational message. No user action is required.

2014-05-04 14:42:12.60
spid8s      SQL Server Audit has started the audits. This is an
informational message. No user action is required.

2014-05-04 14:42:13.93
spid8s      SQL Trace ID 1 was started by login “sa”.

2014-05-04 14:42:14.09
spid8s      Server name is ‘FANRCO-PC’. This is an informational message
only. No user action is required.

5.1.3 数据库启动

系统数据库的开行顺序是master,msdb,mssqlsystemresource,model,tempdb,也足以当errorlog中找到相关消息:

2014-05-04 14:42:10.57
spid8s      Starting up database ‘master’.

2014-05-04 14:42:16.67
spid21s     Starting up database ‘msdb’.

2014-05-04 14:42:16.67
spid22s     Starting up database ‘AdventureWorks2012’.

2014-05-04 14:42:16.74
spid10s     Starting up database ‘mssqlsystemresource’.

2014-05-04 14:42:16.74
spid23s     Starting up database ‘tst’.

2014-05-04 14:42:16.75
spid24s     Starting up database ‘AdventureWorksDW2012’.

2014-05-04 14:42:18.27
spid10s     Starting up database ‘model’.

2014-05-04 14:42:19.42
spid10s     Clearing tempdb database.

2014-05-04 14:42:20.13
spid10s     Starting up database ‘tempdb’.

起先成功后,会打印一下信:

2014-05-04 14:42:22.40
spid8s      Recovery is complete. This is an informational message only.
No user action is required.

5.1.4 准备网络

开行成功master数据库后,就起来备网络了,从注册表中读取注册表信息。然后开功能:

Shard Memory启动后,errorlog会有:

2014-05-04 14:42:15.45
spid15s     Server local connection provider is ready to accept
connection on [ \\.\pipe\SQLLocal\MSSQLSERVER ].

Named Pipe启动后,会有:

2014-05-04 14:42:15.45
spid15s     Server local connection provider is ready to accept
connection on [ \\.\pipe\sql\query
].

还有tcp启动之后监听的端口:

2014-05-04 14:42:15.52
Server      Server is listening on [ ::1 <ipv6> 1433].

2014-05-04 14:42:15.52
Server      Server is listening on [ 127.0.0.1 <ipv4>
1433].

若果发生DAC专用管理总是,那么还会见打印:

2014-05-04 14:42:15.52
Server      Server is listening on [ ::1 <ipv6> 1434].

2014-05-04 14:42:15.52
Server      Server is listening on [ 127.0.0.1 <ipv4>
1434].

2014-05-04 14:42:15.52
Server      Dedicated admin connection support was established for
listening locally on port 1434.

当网络准备就后会打印:

2014-05-04 14:42:15.59
spid15s     SQL Server is now ready for client connections. This is an
informational message; no user action is required.

于预备网络中,如果某个协议不能够吃加载,SQL Server会报错但是非会见潜移默化实例的启航。只有一个异,使用SSL对连接加密的,SSL在开行需要SQL
Server加载证书,如果证明无法加载那么SQL Server启动会为停。

5.2 数据库状态切换

ACCESS 3

5.2.1 Recovering

Recovering主要处理3件业务:

1.解析如果开的办事:就是以事情日志文件被,找到那些事情要还做,那些事情要回滚

2.Redo:将曾经交给的不过没写入数据文件的事情,做前滚

3.undo:对莫交给的政工做回滚

一下子几个动作会被数据库进入Recovering:

1.创立数据库

2.Alter Online,上线数据库

3.RESTORE WITH RECONVERY:恢复数据库

4.DatabaseStartup,数据库启动,如果数据库设置了自行关闭,就会见于用户率先糟糕看的时光召开此动作。

恢复正常之后,数据库会进来online状态。

5.2.2 Online

此状态下用户可看,修改。

5.2.3 RECOVERY PENDING

假设当数据恢复的时候不可知科学打开数据库文件,数据库会进来RECONVERY PENDING的状态。

解决办法:用ALTER ONLINE再过来一软,或者采取备份恢复

5.2.4 SUSPECT

数据库进入SUSPECT状态在这状态下管理员有3只选项:

1.以一次ALTER
ONLINE,命令SQL Server再回复一潮

2.放弃时数据库,再过来一个

3.用数据库状态设置为,EMERGENCY,然后尝试修复

5.2.5 EMERGENCY

以斯模式下,SQL Server对没完全恢复的数据库开放一个独自念窗口

5.2.6 RESTORING

数据库在回复状态下,如果是WITH RECOVERY,还原的最后一步会进去RECONVERY状态。

5.2.7 Offline

数据库处于离线状态,可以动用ALTER ONLINE让数据库上线。

5.3 数据库长时处在RECOVERING状态

RECONVERING主要做3件事:

1.查看需要恢复那些事情

2.redo事务

3.undo事务

倘若当redo和undo遇到题目数据库就会进SUSPECT状态,在就恢复之前数据库必须等完成。

假定长期居于RECOVERING可以应用,以下sql查看进度

SELECT*FROMsys.sysprocesses

SELECT*FROMsys.dm_exec_requests

要是没什么变动,可以开始了更开服务,再做同不行恢复。

偶不是挺忙碌的数据库恢复如死丰富日子,是因生了多之VLF(虚拟日志文件),导致恢复计算量过大,导致恢复老缓慢。

可使用DBCC
LOGINFO查看虚拟日志情况。

5.3.1 多线程并行处理重开同回滚

于店版及,SQL Server会启动多单线程来再次开同回滚动作。

5.3.2 延迟事务

是跟摸索不交数据文件不同,延迟事务是于还原过程被,出现IO错误,那个事务所修改的数码都见面为当的锁定。SQL Server会放弃这个工作的回滚,继续回滚其他作业。上面的锁会在dbcc checkdb修复一致性后放。

5.4 数据库无法启动之广阔问题

5.4.1 Master数据库不克开行

Master数据库不可知启动一般是来怎么几种植情形:

1.sql server启动参数中,指定的文件路径不针对。

2.找到了数据库文件但是没权力

3.数据库文件出现损坏,如果出现损坏,要无打备份中还原,要无重建master数据库(重建master数据库可关押一块文档)。

5.4.2 资源数据库

Mssqlsystemresouce数据库,对用户透明,用户无法直接看这个数据库。出现的题材一般如下:

1.sql server启动参数中,指定的文件路径不针对。

2.发觉资源数据库的本与数据库版本不一样。

如若发现未等同相同版本的别样实例中复制一个。

5.4.3 model数据库

Model数据库是具用户数据库的则,根据model数据库创建的用户数据库。出现的题目及master类似。

假定起问题:

方法一、

1.带traceno
3608开行,可以绕了model的复

2.恢复model数据库

3.重启

方法二、

直白调换model文件

方法三、

重建model数据库

5.4.4 tempdb数据库

Tempdb数据库是历次服务又开就会见重建,所以可能出现的问题是:

1.大体文件路径不针对

         a.traceno 3608启动

         b.修改数据库文件路径

         c.重启

2.tempdb创建文件失败,创建失败一般是绝非权限或者空间不够,如果空间不足够:

         a.traceno 3608启动

         b.修改数据库文件大小

         c.重启

5.4.5 用户数据库

用户数据库不克开行的广泛问题是:缺少或者无法打开部分文件,恢复失败。前者数据库进入RECOVERY_PENDING状态,后者会进来SUSPECT状态。

5.4.5.1 文件打开问题

文本打开分为2类:数据文件,日志文件。

数据库文件

设若主文件组出现问题,只有当主文件组全部过来后才会打开数据库

假设是支援文件组可以优先管救助文件组offline,然后 ALTER
ONLINE数据库。

然后由备份中恢复这个文件组

日记文件

倘是简约恢复模式,在上次数据库正常关闭(写入所有提交的数,撤销所有非提交的事情),那么下次SQL Server启动这个数据库的早晚,发现日志文件未存会另行创设一个。

设是完全恢复模式,或者上次不曾正规关闭,就无会见呢这数据库创建日志文件

 

使要东山再起数据库,可以使备份还原,也堪通过dbcc checkdb来还原,不过可能会见掉一部分数据。

 

5.4.5.2 恢复失败

以还原吃会产出3ACCESS烦劳错误

1.每当redo过程被碰到能顺延的谬误

2.于undo过程遭到相见能延迟的荒谬

3.撞不能够延缓的缪

再次做着遇错误

假设误是足以缓的,遇到错误的页面被锁定。

撤中相见错误

每当侧小的当儿发出误,SQL Server会标记整个业务涉及到的页面,然后继续其他undo。该锁的对象属于session -3

遇是问题可由此备份恢复,也可以为此dbcc checkdb恢复,不会见或只要少一部分多少

SUSPECT模式

当数据库恢复失败不克延缓,最终见面跻身SUSPECT模式。一般出现这种状态,要不就有大量的毁,要不就分配页出现破坏。

遇这个题材可以由此备份恢复,也堪用dbcc checkdb恢复,不会见可能而掉一部分数目

5.5 集群环境下,数据库资源不克ONLINE的宽泛问题

 

参考:

http://www.cnblogs.com/lyhabc/archive/2012/09/15/2687076.html

 

相关文章