首頁 >資料庫 >mysql教程 > 记录今天客户的SQLSERVER启动不起来( 错误9003)的解决过程2013-11-26

记录今天客户的SQLSERVER启动不起来( 错误9003)的解决过程2013-11-26

WBOY
WBOY原創
2016-06-07 17:37:151089瀏覽

记录今天客户的SQLSERVER启动不起来( 错误9003)的解决过程2013-11-26 今天一大早上班就接到客户的电话,说:SQLSERVER启动不起来,业务系统使用不了 于是我就使用QQ 远程 ,帮客户解决问题 环境 先说一下环境 客户环境:Windows2003企业版SP2 32位 SQL2005企

记录今天客户的SQLSERVER启动不起来( 错误9003)的解决过程2013-11-26

今天一大早上班就接到客户的电话,说:SQLSERVER启动不起来,业务系统使用不了

于是我就使用QQ远程,帮客户解决问题

 

环境

先说一下环境

客户环境:Windows2003企业版SP2 32位 SQL2005企业版 32位 SP4

自己笔记本电脑环境:Windows7 SP1  32位  SQL2005个人开发者版 32位

我的笔记本电脑的计算机名:joe

客户电脑的计算机名:hs

 

客户那边的master数据库大小:几MB

业务系统是winform系统

客户的环境是单机系统没有使用到域

 

网络环境:客户那边的网速比较慢,用远程协助的时候比较卡

 

为什麽要说明我自己笔记本电脑的环境呢?请大家继续耐心看下去

检查

先打开SQLSERVER配置管理器,启动SQLSERVER,发现SQLSERVER启动不起来

于是我打开Windows EventLog,发现了下面错误

SQLSERVER 错误9003:LSN无效(日志扫描号无效)
"传递给数据库 'master' 中的日志扫描操作的日志扫描号 (2806:120:1) 无效。
此错误可能指示数据损坏,或者日志文件(.ldf)与数据文件(.mdf)不匹配。
如果此错误是在复制期间出现的,请重新创建发布。否则,如果该问题导致启动期间出错,请从备份还原。

 

于是我就在自己的电脑上百度了一下这个错误

搜索到这篇文章:sql server 错误9003:LSN无效(日志扫描号无效),对数据库的修复

这篇文章里的数据库是用户数据库,用rebuild log,dbcc checkdb解决了问题

悲催的是客户那边损坏的是master数据库

 

想办法

作为一个好的数据库工程师,一定要快速知道有哪些方法可以解决当前客户的问题

这些方法有什么利弊,因为延迟一秒钟,就会造成客户更多的损失,客户的业务系统无法正常运作,,后果可想而知

 

由下面几个因素,我作出了一个选择

网速比较慢,不方便在客户的电脑上写SQL语句

客户那边的master数据库大小:几MB

业务系统是winform系统

 

选择:以前项目经理教我的一个方法,遇到SQLSERVER启动不起来

可以用刚刚安装好的SQLSERVER的master数据库替换掉客户那边的master数据库

 

这种方法有下面的弊端

(1)你所用的数据库版本一定要和客户的一样

(2)将SQLSERVER2012的master数据库给客户是不行的

(3)服务器触发器,证书,链接服务器,登录用户等信息会丢失

为什麽会有这些弊端,大家可以看一下下面的文章

SQL Server 2008中的Service SID 介绍

 【SERVICE SID的引入】
NT SERVICE\MSSQL$KATMAI, NT SERVICE\SQLAgent$KATMAI和NT SERVICE\ClusSvc 其实都是Service SID所对应的名字。

Service SID的引入,是为了解决多个Service可能同用一个service帐号所带来的安全隐患。

如IIS 使用Network Service帐号,可能其他服务也使用Network Service帐号。

为了使得IIS能够连接到SQL Server, 我们可能会把Network Service作为SQL Server的login, 但是这是不安全的。

因为其他服务如果以Network Service做为启动帐号的话,也能访问SQL Server。

为了解决这个问题,在SQL Server 2008/Windows Server 2008及以后

我们有了SID这个概念,这样,不同的服务,即使服务启动帐号是相同的,它们的SID也是不同的。

 

SQLSERVER2005

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn