你所不知道的SQL Server数据库启动过程,以及启动

时间:2017-07-13 15:00

目前SQL Server数据库作为微软一款优秀的RDBMS,其本身启动的时候是很少出问题的,我们在平时用的时候,很少关注起启动过程,或者很少了解其底层运行过程,大部分的过程只关注其内部的表、存储过程、视图、函数等一系列应用方式,而当有一天它运行的正常的时候突然启动不起来了,这时候就束手无策了,能做的或许只能是重装、配置、还原等,但这一个过程其实是一个非常耗时的过程,尤其当我们面对是庞大的生产库的时候,可能在这火烧眉毛的时刻,是不允许你再重搭建一套环境的。

所以作为一个合格的数据库使用者,我们要了解其启动、运行过程的事情,一旦发生问题,我们也能及时定位,迅速解决。

闲言少叙,我们进入本篇的正题。 

SQL Server本身就是一个Windows服务,每一个实例对应的就是一个sqlserver.exe进程。这是一个可执行的文件,默认就放在SQL Server的安装目录下,当我们启动的时候,就是直接调用这个文件,然后启动这个服务。 

第一部分、SQL Server实例启动的方法和启动所发生的问题

SQL Server实例分为下面几种启动方法:

(1)在Windows服务控制台里手动启动,或者自动启动(默认),这个也是最常用的方式

你所不知道的SQL Server数据库启动过程,以及启动

(2)第二种方式是SQL Server本身自己提供的启动方式,我们这里可以手动启动

你所不知道的SQL Server数据库启动过程,以及启动

(3)在SQL Server的SSMS里面手动启动它,这个方式一般大部分利用这种方式进行手动重启

你所不知道的SQL Server数据库启动过程,以及启动

(4)通过Windows命令窗口,用'net start'命令手动启动,这种方法也可以用

你所不知道的SQL Server数据库启动过程,以及启动

以上这几种方式都可以启动SQL Sever,并且都会在SQL 日志信息中有所记录。

----------------------------------------------------------霸气的分割线-----------------------------------------------------------------------

第二部分、SQL Server实例启动的详细过程以及所发生的问题项

第一步、检查注册表项

当一个sqlserver.exe文件开始启动的时候,首先要干的第一件事就是先检查它的配置信息存放于注册表的值项

你所不知道的SQL Server数据库启动过程,以及启动

比较重要的几个键值有下面几个:

你所不知道的SQL Server数据库启动过程,以及启动

这里的

AuditLevel:其实就是SQL 如何记录用户登录记录;

LoginMode:是SQL Server服务器身份验证方式等;

BackupDirectory:默认的备份路径等信息;

关于注册表信息简要了解即可,不建议做任何修改,当然这些值的信息默认在SQL Server中都能设置:

你所不知道的SQL Server数据库启动过程,以及启动

在不修改注册表的情况下,一般这一步的启动顺序一般不会出现问题,当然出现问题了也通常没有办法解决,大部分的解决方式只有重装了。

但这一步骤,通常出现以下两个个问题通常是可以解决的:

<1>启动账号权限问题

如果我们启动SQL Server的进程使用的账号连读注册表的权限都没有,那这个服务是怎么也启动不了的,通常这时候连SQL 的错误日志都没有能力生成出来。

这时候我们该如何发现呢,虽然这时候它没有能力创建SQL 的错误日志,但是它在Windows层面留下了痕迹,我们来看:

我将服务启动账号设置成gust来宾账号,来启动该服务

你所不知道的SQL Server数据库启动过程,以及启动

这时候会产生以下错误信息:

你所不知道的SQL Server数据库启动过程,以及启动

在Windows的日志信息里也会产生一条错误日志记录:

你所不知道的SQL Server数据库启动过程,以及启动

这里的拒绝访问指的就是拒绝访问注册表信息了。

解决方法

此问题的解决方式就很简单了,只需要将当然的用户提权到SQL Server服务的启动账号就行了,提权的方式也很简单,只需要添加到SQL的本地用户的启动服务组就可以了。

当然,也可以直接换一个更高级别的用户登录。一般默认都用的超级管理员账户。

<2>访问日志和文件夹出现问题