linux启动sql server数据库,SQL Server数据库启动过程详解及启动不起来的问题分析及解决方法...
第五步、启动系统数据库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进行了多种无情的蹂躏、各种的摧残��力求能够重显各种不同的应用场景问题现象,然后尽可能的找到合适的解决方案,当然还有很多的情况没有展现出来,后续遇到,会一一补充进来,当然有遇到不能解决的,也可以留言,我们一起分析解决。
关于用户数据库启动过程,这个过程是一个问题较易发生的步骤,神马质疑、恢复中、不可用等等现象,我后续的文章中列举分析。
相关文章:

navicat对mysql的备份
1:备份位置:_3306的“连接信息”可以看到。或者点:前往设置保存路径 2:建议一定时间点进行备份或者命令执行;转载于:https://blog.51cto.com/q168988/1969780

上当记,收国外快递时,注意相关责任定义
刚才在收到M$从米国寄来的包裹时,一时大意给了送快递的1百多的税钱,后来想想不对,在包裹上看到DDP字样(Delivery duty paid),上网一查DDP: “完税后交货(……指定目的地&…

python远程登录linux命令,Python+requests通过paramiko远程登录Linux执行sh命令
在做自动化测试过程中, 偶尔需要登录Linux服务器执行一些sh命令。Python的paramiko模块, 遵循SSH2协议, 支持以加密和认证的方式远程连接服务器, 可用来连接远程linux主机, 然后执行Linux命令或者通过SFTP传输文件封装的方法import paramikoclass Operate_Server():def __init_…

2017-09-29 前端日报
2017-09-29 前端日报 精选 被誉为神器的requestAnimationFrame我是怎样让网站用上HTML5 ManifestReact 的性能优化(一)当 PureComponent 遇上 ImmutableJSJavaScript 异步队列实现及拓展CSS Grid Gotchas And Stumbling BlocksAbortable fetchAlloyTeam …

Apache Kylin v2.5.0正式发布,开源分布式分析引擎
文章转载自开源中国,作者 Apache Kylin 社区日前,Apache Kylin 社区宣布,Apache Kylin v2.5.0 正式发布。Apache Kylin 是一个开源的分布式分析引擎,旨在为极大数据集提供 SQL 接口和多维分析(OLAP)的能力。…

不同职业阶段的修炼: 多与少
有多才有少 开学第一天,教室里挤满来选修“领导”课程的学生,这一群两年后就会变成企业竞相争取的名校MBA,心中难免兴奋地等待教授的出现。教室门被推开后,走进三个人,教授后面跟着一个年轻的陌生人,还有一…

underscorejs之 _.indexBy(list, iteratee, [context])
语法 _.indexBy(list, iteratee, [context]) 说明 给定一个list,和 一个用来返回一个在列表中的每个元素键 的iterator 函数(或属性名), 返回一个每一项索引的对象。和groupBy非常像,但是当你知道list的key是唯一的时候…

linux shell $0怎么输出,linux shell中$0,$?,$!等的特殊用法
一、Shell脚本中$0、$?、$!、$$、$*、$#、$等的意义说明(1)$$Shell本身的PID(ProcessID,即脚本运行的当前进程ID号)(2)$!Shell最后运行的后台Process的PID(后台运行的最后一个进程的进程ID号)(3)$?最后运行的命令的结束代码(返回值)即执行上一个指令的返回值 (显示…

云从科技完成B+轮超10亿元融资,多个国家基金进入
10 月 8 日,中国人工智能国家队云从科技宣布正式完成新一轮超 10 亿元人民币融资,除元禾原点、越秀金控,刘益谦等原有股东继续跟投外,本轮新增了多家中国国家战略投资者,其中不乏知名地方政府基金,包括中国…

12×××求职经过-之求职信
求职信: 鼠:本地户口,以前在武钢工地打过工,转移过一部分钢材的所有权,被当做失足青年挽救三年。擅长上夜班,会开麻木,求社区服务,家政等职。 牛:身体好,能吃…

面向对象三大特性一一封装(encapsulation)
为什么要封装? 我们看电视,只要按一下开关和换台就行了。有必要了解电视的内部结构吗?有必要了解显像管吗? 封装是为了隐藏对象内部的复杂性,只对外公开简单的接口。便于外界调用,从而提高系统的可扩展性&a…

云计算赋能人工智能,未来的红利在哪?
“云”这个概念对于身处于信息时代的我们而言越来越熟悉,而云计算平台作为对计算机软硬件资源进行集中存储、管理的平台,已经不再是一个遥远的 IT 概念,它开始渗透到各行各业,未来将会像水和电一样,作为基础设施&#…

pxe linux 配置文件,Linux PXE 部署
一、基础环境准备Linux配置静态IP-192.168.5.1# vim /etc/sysconfig/network-scripts/ifcfg-eth0DEVICEeth0ONBOOTyesBOOTPROTOstaticIPADDR192.168.5.1NETMASK255.255.255.0:x --保存退出#service network restart#service iptables stop二、准备安装镜像#mount /dev/cdrom /m…

Keras还是TensorFlow?深度学习框架选型实操分享
译者| 王天宇、林椿眄责编| Jane、琥珀出品| AI科技大本营深度学习发展势头迅猛,但近两年涌现的诸多深度学习框架让初学者无所适从。如 Google 的 TensorFlow、亚马逊的 MXNet、Facebook 支持的 PyTorch、Theano、Caffe、CNTK、Chainer、百度的 PaddlePaddle、DSSTN…

Android -- queryIntentActivities
某些时候你想要知道某个APP是否有注册了一个明确的intent,比如说你想要检查某个receiver是否存在,然后根据是否存在来这个receiver来在你的AP里面enable某些功能。我们可以通过PackageManager来check它。 code public boolean isIntentAvailable(Context…

吉大c语言程序设计作业一,吉林大学历年C语言程序设计试题及答案.doc
吉林大学历年C语言程序设计试题及答案吉林大学历年C语言程序设计试题及答案(5)END2000年试题答案一、(1)解题思想: 用5个数 a,b,c,d,e,来回替换,最终f(n)算出。设计程序如下:int F(int n){ if(n <5) return n ;int temp,a1;b2;c3;d4;e5;fo…

忍不住心中的激动
天天上自行车旅行网,看到别人的出行游记,心里很羡慕,也很冲动,想想还有1个多月就可以出发了,不知道能坚持到哪里,恒心是有的,可身体就不知道,不过这次时间可以不用那么紧,…

程序员入错行怎么办?
程序员应该选择什么技术领域才能获得最高的回报?本文详细解读了 2018 年最热门的五大领域,对行业现状、薪资概况及具体的技能要求给出了深入的分析,希望给担心“入错行”的你提供些指导。七天国庆黄金周转眼就过,退散的除了出游热…

关于局域网共享访问问题总结
Windows网上邻居互访的基本条件: 1) 双方计算机打开,且设置了网络共享资源; 2) 双方的计算机添加了 "Microsoft 网络文件和打印共享" 服务; 3) 双方都正确设置了网内IP地址,且必须在一个网段中&…

Linq初级班 Linq To XML体验(基础篇)
LINQ To XML体验(基础) 这两天开始学习LINQ to XML的知识,我会继续把自己的感想和示例发布给初学者们学习的,一样欢迎高手们多多指点,请勿使用过激语言,针锋相对,我是个初学者,自知还有许多不足的地方,还请高手们多多耐心指导,好了,下面就开始我们的LINQ to XML旅程吧,在此之前…

c语言字符串机考题,2016全国计算机二级《C语言》机考试题及答案
2016全国计算机二级《C语言》机考试题及答案一、程序填空题(共18分)下列给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。ss所指字符串数组中共有…

如何快速优化机器学习的模型参数
作者 | Thomas Ciha译者 | 刘旭坤编辑 | Jane出品 | AI科技大本营【导读】一般来说机器学习模型的优化没什么捷径可循。用什么架构,选择什么优化算法和参数既取决于我们对数据集的理解,也要不断地试错和修正。所以快速构建和测试模型的能力对于项目的推进…

2004-10-26+ 用户输入的安全问题
最近在看一本叫《asp.net安全性高级编程》,把一些感兴趣的东西写成笔记当到这里吧,今天这一篇主要是讲怎么防御注入攻击的。script injection 1.验证内容a.使用regularexpressionvalidator的正则表达式来限制用户输入2.筛选用户输入a.使用string.replace…

在C语言中break语句称为,在C语言中,break语句的功能是退出函数
摘要:燃烧煤中质在中过程所含矿物,语言k语高温和氧化后分解,称为,体残的固留物生成。出函只装锅炉机时称(引风。语言k语锅炉规格都以其公取的常用称压一般为选力和来作阀门上的。...燃烧煤中质在中过程所含矿物,语言k语…

C语言算法6-15
2019独角兽企业重金招聘Python工程师标准>>> 【程序6】 题目:用*号输出字母C的图案。 1.程序分析:可先用*号在纸上写出字母C,再分行输出。 2.程序源代码: #include "stdio.h" main() { printf("Hello C…

二维数组c语言矩阵加法,C 语言实例 – 两个矩阵相加 - C 语言基础教程
C 语言实例使用多维数组将两个矩阵相加。#include int main(){int r, c, a[100][100], b[100][100], sum[100][100], i, j;printf("输入行数 ( 1 ~ 100): ");scanf("%d", &r);printf("输入列数 ( 1 ~ 100): ");scanf("%d", &c…

自动生成HTML的一段程序
<%ifSaveFile("list.htm","http://192.168.1.4:920/lcy.asp") thenResponse.write "已生成"elseResponse.write "没有生成"endiffunctionSaveFile(LocalFileName,RemoteFileUrl) DimAds, Retrieval, GetRemoteData OnErrorRe…

【JAVA零基础入门系列】Day2 Java集成开发环境IDEA
【JAVA零基础入门系列】(已完结)导航目录 Day1 开发环境搭建Day2 Java集成开发环境IDEADay3 Java基本数据类型Day4 变量与常量Day5 Java中的运算符Day6 Java字符串Day7 Java输入与输出Day8 Java的控制流程Day9 Java中的那个大数值Day10 Java中的数组Day1…

只讲技术,拒绝空谈!2018 AI开发者大会精彩议程曝光
2018 年 11 月 8-9 日,由中国 IT 社区 CSDN 与硅谷 AI 社区 AICamp 联合出品的 2018 AI 开发者大会(AI NEXTCon)将于北京盛大召开。届时,近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者将齐聚于此,展开全方位技…

经典的Java基础面试题集锦
问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示”main方法不是public的”。 问题:Java里的传引用和传值的区别是什么? 答案:传引用是指传递的是地址而不是值本身…