第五步、启动系统数据库model

model系统数据库同样也是SQL Server启动过程中用到的一个非常关键的数据库,如果这个库损坏,SQL Server启动也会失败,关于model数据不能启动的原因基本和master的类似,同样也是两种:1、数据库文件早不到或者不能访问;2、数据库文件能访问但是是损坏的文件。

诊断此种问题的方式也和上面的两种方式一样,查看启动过程产生的errorlog文件或者windows系统日志,这里我们就不重现该问题了。

我们只给出此种问题的解决方法:

1、如果该库我们已经做过备份,那最直接也是最有效的解决方式就是直接还原,这里的还原方式可能和普通库的还原方式不一样,因为SQL  Server实例还没有启动,我们恢复过程采取以下过程:

a.用参数启动SQL Server,在命令提示行中执行以下命令,这样的话SQL Server启动就会跳过model数据库恢复这一步

net start MSSQLSERVER /f /m /T3608

b.现在恢复model数据库,打开SSMS,直接输入

RESTORE DATABASE model FROM DISK ='G:\data\model.bak'WITH

MOVE'modeldev' TO 'E:\dataDefaultFileManger\MSSQL10.MSSQLSERVER\MSSQL\DATA\model.mdf'MOVE'modellog' TO 'E:\dataDefaultFileManger\MSSQL10.MSSQLSERVER\MSSQL\DATA\model.ldf',replace

c.恢复成功后,直接重启SQL Server既可以。

2、将SQL Server关闭,然后直接采取暴力的方式将model数据文件拷贝回来就可以,这种方式简单有效,但是非常规操作

3、还有一种方式是利用setup安装文件,重建该数据库,过程缓慢,稍显复杂,很不推荐。

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

第六步、开始网络配置进行连接,对外提供服务,使用的默认的1433端口

当上面的几个重要的系统库都已经启动完成之后,下一步就是开始检查网络环境,进行网络服务的配置,对外进行提供服务了,一般来讲,在SQL Server中利用的网络启动协议有三种:Shared Memory、Named Pope和TCP/IP,其实在日常我们最常用的就是TCP/IP这种方式了,并且默认开启的是1433端口。

我们来看一下正常启动过程中,该部分的详细日志:

这里面的Shared Memory是专供本地连接通过LPC(Local Procedure Call)技术向SQL Server做的连接。它不走网络层,所以他是速度最快的连接方式。正常启动后会显示上面的正常日志。

Named Pipe方式正常启动,也会显示出上面的日志。可以看到。

这其中我们最常用的TCP/IP这种方式,也正常的启动了,并且指定了两种访问方式,ipv4/ipv6,然后后面加上了1433端口号。

在这个过程中最常出现的问题就是,1433端口被其它程序占用,这样就导致TCP/IP协议无法正常启动,这样我们会看到如下日志信息

并且在windows 系统日志中也会有记录

解决方法:

其实这里出现的问题还是挺好解决的,只需要找到占用这个端口的应用程序,采取措施让它把这个端口给让出来就可以。

当然出现这些问题就意味着客户端已经无法通过TCP/IP这种远程连接的方式进行连接访问了。

这时候一般管理员可以采用SQL Server给其提供的“专用管理员连接”(DAC)进行连接,这种方式我们以后再介绍。

当然,在SQL Server启动的过程中,一般出现这种网络问题,或者协议不能成功加载,SQL Server会报出错误信息,但是一般情况下是不会影响SQL Server的正常启动的。受影响的可能只是出问题的那种协议功能。

我们只需要根据日志,定位问题,然后解决掉,重新启动就可以了。

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

第七步、开始启动msdb系统数据库

关于msdb这个系统数据库,它是被安排在系统库中接近最后一个了,除了用户数据库和临时库tempdb之外,当启动过程中已经进行到这一步的时候,其实我们的实例就已经启动起来了,并且能够连接。

我们知道msdb这个库中主要的存储的信息是应用各个库的备份信息,各种job的历史跑批信息等,其实诸多的都是来自于用户数据库所产生的一些客观数据。

我们来看一下这个库出现了问题会产生什么现象:

我将这个库文件移除走,然后重新启动服务,启动过程中没有报任何错误,并且能够顺利启动,我们用SSMS直接连接过去,也可以正常连接

但是当我们点击开数据的时候,其实是看不到任何用户数据库的,并且会产生一个错误提示:

看来是不能使用的,我们来查看一下错误日志:

虽然这个库的重要性比起master之类的库重要性要稍显差一些,但是缺少了它我们的SQL Server虽然能启动,但是依然不能使用。

解决方法:

要解决这个问题其实方式就很多种了,因为到此我们的SQL Server实例已经能够正常启动了,我们可以采取:

1、利用备份还原该库,参考文章前面的方式(推荐)

2、关掉服务,利用暴力的拷贝文件的方式进行恢复,简单有效,非常规操作

3、找台相同的环境,找到相同的文件,直接拷贝过来使用

4、利用安装文件进行恢复(不推荐)

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

第八步、启动用户数据库,并且完整各个库的完整性校验,并且在启动用户数据库之前,先将系统库的tempdb进行清空

本步骤所遇到的问题层出不穷,各种样式,我打算再重新组织一篇文章,专门列举,此篇就不介绍了。

但有一点需要记住:在这一步之前SQL Server会将tempdb这个系统库清空掉,也就是说,每次的重启操作,系统都会将tempdb清空,然后重建,这一步一般不会发生异常,成功之后会出现以下日志信息:

第九步、开始重建系统的另外一个数据库tempdb

tempdb这个库比较特殊,每次重启的时候都是重新创建的,SQL Server会根据master数据库里的记录的信息以model数据库为版本进行创建。所以只要我们保证model数据库没有问题,然后硬盘没有问题,tempdb的数据库文件就应该没有问题。

关于temdb这个库的所有配置信息是存储于master的数据库中的,里面的内容信息是存储于model系统库中的

这样就带来了一个问题,有时候我们的master的库是从别的机器下面备份下来的,所以它里面会记录这个tempdb这个库在原来机器上的路径,这样在启动创建的时候就会报错。

所以我们需要执行以下命令更改这个库路径

a、用参数启动SQL Server

net start MSSQLSERVER /f /m /T3608

b.修改数据文件和日志文件路径

ALTER DATABASE tempdb MODIFY FILE(NAME=tempdev,FILENAME='C:\right path....\temdb.mdf');

go

ALTER DATABASE tempdb MODIFY FILE(NAME=tempdev,FILENAME='C:\right path....\temdblog.ldf');

go

c.正常启动数据库既可以

还有一种情况,就是创建该文件的时候,提供的硬盘空间不足,或者权限不够,我们也是根据上面的方式,修改到一个正确的路径,并且确保权限正确。

也可以更改temp文件的大小,默认是4M,代码如下:

ALTER DATABASE tempdb MODIFY FILE(NAME=tempdev,SIZE=100MB);

go

ALTER DATABASE tempdb MODIFY FILE(NAME=tempdev,SIZE=100MB);

go

至此,如果上面的整个过程都没出问题的话,一个正常的SQL Server就可以启动成功的。

结语

本篇文章到此结束了.....此篇耗时三天.....为了尽可能的呈现出所有的问题现象,我对本地的SQL Server进行了多种无情的蹂躏、各种的摧残��力求能够重显各种不同的应用场景问题现象,然后尽可能的找到合适的解决方案,当然还有很多的情况没有展现出来,后续遇到,会一一补充进来,当然有遇到不能解决的,也可以留言,我们一起分析解决。

关于用户数据库启动过程,这个过程是一个问题较易发生的步骤,神马质疑、恢复中、不可用等等现象,我后续的文章中列举分析。

linux启动sql server数据库,SQL Server数据库启动过程详解及启动不起来的问题分析及解决方法...相关推荐

  1. SQL注入攻击实现原理与攻击过程详解

    SQL注入攻击实现原理与攻击过程详解 结构化查询语言(SQL)是一种用来和数据库交互的文本语言,SQL Injection就是利用某些数据库的外部接口把用户数据插入到实际的数据库操作语言当中,从而达到 ...

  2. linux直接运行程序加载动态库失败,扣丁学堂Linux培训详解程序运行时加载动态库失败解决方法...

    今天扣丁学堂Linux培训老师给大家介绍一下关于Linux程序运行时加载动态库失败的解决方法,希望对同学们学习有所帮助,下面我们一起来看一下吧. Linux下不能加载动态库问题 当出现下边异常情况 . ...

  3. 一条标准SQL语句是怎么执行之“步步惊心”过程详解与案例分析

    SQL逻辑执行过程详解(限标准SQL) 表与数据 -- 1 创建 HR.Employees表 CREATE TABLE HR.Employees (empid INT NOT NULL IDENTIT ...

  4. 数据库除关系运算符执行过程详解

    数据库除关系运算符案例详解 声明与简介 数据库里的Div(除)运算符是借鉴了数学基本元素除的理念,即整体除以个体,得到组(满足个体的特征的集合). 所以如果"被除数"的集合R有4个 ...

  5. 安卓 linux init.rc,[原创]Android init.rc文件解析过程详解(二)

    Android init.rc文件解析过程详解(二) 3.parse_new_section代码如下: void parse_new_section(struct parse_state *state ...

  6. SQL Server 聚集索引 clustered index 非聚集索引Nonclustered Indexes键查找查找Key Lookup执行计划过程详解

    SQL Server 聚集索引非聚集索引键查找过程详解 索引的相关术语 1 堆(Heap)是一种没有指定排序的数据结构,通俗的理解堆就像是按照顺序排放的杂物.在数据库里也即是对应没有聚集索引. 2 聚 ...

  7. SQL Server 2008 R2 安装过程详解

    SQL Server 是Microsoft 公司推出的关系型数据库管理系统.Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理.M ...

  8. CentOS下DB2数据库安装过程详解

    这篇文章主要介绍了CentOS下DB2数据库安装过程详解,本文步骤详细,操作的命令也比较全 安装前请查看DB2版本和许可证说明来增加了解,先弄明白改安装什么版本,这里我用的是最新的Express-C版 ...

  9. JetBrains DataGrip工具配置数据库过程详解

    JetBrains DataGrip工具配置数据库过程详解 DataGrip是一款数据库管理客户端工具,方便连接到数据库服务器,执行sql.创建表.创建索引以及导出数据等. DataGrip 是 Je ...

最新文章

  1. 中文停用词文档_使用Python中的NLTK和spaCy删除停用词与文本标准化
  2. Exchange2010配置-设置OWA身份验证及重定向
  3. OpenCV isContinuous()连续存储的问题
  4. request for KPI tile number display could not be executed for the second time
  5. windows下node安装
  6. “约见”面试官系列之常见面试题之第六十一篇之IE和DOM事件流(建议收藏)
  7. linux启动tongweb命令,linux7开机自启动东方通tongweb
  8. oracle 导出数据 utl,使用utl_file做选择性数据导出
  9. 二 关键词---关键词的选择(二)
  10. 1022. Digital Library
  11. JavaScript 的 async/await 理解(4)
  12. 23 android多线程
  13. Linux 查看 硬件配置
  14. 笔记:C# log4net App.config 配置系统未能初始化问题的一种处理方法
  15. AutoCAD 2007打开慢
  16. 暂时解决Xmarks无法同步
  17. 立创eda学习笔记一:pcb板基础知识
  18. 阿里巴巴算法岗编程题:菜鸟仓库
  19. 店铺如何提升流量,抢占先机
  20. 短视频app开发:如何实现视频直播功能

热门文章

  1. gitlab如何克隆项目到本地进行开发,如何让webstorm项目右键菜单出现Git子菜单,右下角出现Matser分支
  2. Ubuntu 14.04安装搜狗拼音linux版应该注意的问题
  3. 元宇宙:基础-虚拟现实栈开发和虚拟土地
  4. JavaScript闭包函数箭头函数调用与执行
  5. 在vue中使用babel-polyfill
  6. 【.Net】vs2017 自带发布工具 ClickOnce发布包遇到的问题
  7. PHP 接入(第三方登录)QQ 登录 OAuth2.0 过程中遇到的坑
  8. Oracle数据库一些操作信息
  9. Linux常用命令汇总(持续更新中)
  10. ios app 砸壳