先谈环境
客户环境:Windows2003
企业版SP2 32位SQL2005企业版32位SP4
自己的
电脑环境:Windows7 SP1 32位SQL2005个人
开发者版本32
我的
笔记本电脑名称:乔
客户机
计算机的名称:HS
客户机侧主数据库的大小:几个MB
业务
系统是一个WinForm系统
客户机的环境是单机系统不使用域。
网络环境:客户的网速比较慢,远程协助使用时间比较卡。
为什么我要解释我自己的笔记本电脑的环境请继续耐心地观察它。
检查 打开SQL Server
配置管理器首先
启动SQLServer,
发现SQLServer启动不了
于是我打开Windows事件日志,发现以下
错误 复制代码代码如下所示:
SQLServer错误9003:LSN无效(无效的日志扫描数)
日志扫描次数(2806:120:1)传递到日志扫描
操作在database'master'is无效。
此错误可能指示数据
损坏,或者日志
文件(Ldf)不匹配的
数据文件(.mdf)。
如果在复制期间发生此错误,请重新
创建发行版。否则,如果该问题在启动过程中出错,请从备份中
恢复。
所以我在电脑和百度上犯了这个错误
这篇文章
搜索:SQL Server错误9003:LSN无效(无效的日志扫描次数),该数据库修复
本文的数据库
用户数据库使用重建日志,DBCC CHECKDB来
解决问题
令人遗憾的是,客户端损坏了主数据库。
头脑风暴
作为一个优秀的数据库工程师,一定要快速了解哪些
方法能解决当前的客户问题。
这些方法的优点和缺点是什么因为延迟一秒钟会给客户造成更多的损失,客户的业务系统不能正常
运行,后果可想而知。
从以下几个方面,我做出了选择
网速很慢,在客户端计算机上编写SQL语句并不方便。
业务系统是一个WinForm系统
选择:前任项目经理教我的方式,SQL Server
无法启动 随着新
安装的SQLServer数据库代替客户的数据库
此方法有以下缺点
(1)您使用的数据库版本必须与客户相同。
(2)不可能sqlserver2012 master数据库的客户
(3)
服务器触发器、证书、链接服务器、
登录用户和其他信息将丢失。
为什么他们有这些缺点,你可以看看下面的文章
在SQL Server 2008中引入服务SID
复制代码代码如下所示:
{服务SID的引入
NT服务 MSSQL $ Katmai,NT服务 SQLAgent Katmai美元和NT服务 ClusSvc实际上是对应于服务SID的
名字。
服务SID的引入是为了解决多个服务可能带来的服务帐户的潜在安全风险。
如果IIS使用网络服务帐户,其他服务也可以使用网络服务帐户。
为了使IIS
连接到SQL Server,我们可以使用网络服务作为SQL服务器的登录,但这是不安全的。
因为其他服务也可以访问SQLServer,如果它们是以网络服务作为帐户启动的话。
为了解决这个问题,在SQL Server 2008 Windows Server 2008和以后,
我们有SID的概念,因此不同的服务,即使服务启动帐户是相同的,它们的SID也是不同的。
由于登录用户的机制发生了改变,在SQLServer2008,所以你使用的数据库版本不视客户为好。
但是,即使是相同的,也有一个缺点,客户的登录用户最初是以下方式
复制代码代码如下所示:
内置
管理员 管理员
HS sqlserver2005msfteuser HS MSSQLServer美元美元
HS sqlserver2005mssqluser HS MSSQLServer美元美元
HS sqlserver2005sqlagentuser HS MSSQLServer美元美元
但是如果我把自己的主数据库给客户,它就会变成下面的
如果客户的业务系统是一个B/S系统,则将使用IIS,或者客户的环境是一个域环境。
登录SQLServer需要使用Windows登录验证SQL登录验证,所以这样做是很麻烦的
另一个为自己的电脑是个人开发者,客户是一个企业版,但它已经做过,并没有什么错。
开始实施
医疗事故已经结束,而且已经开始了。
第一步:首先将所有sqlserverd用户数据库在自己的笔记本电脑。
删除一些用户没有安装,在安装时,只要保持
默认的登录用户,停止自己的电脑的SQL服务,复制master.mdf和mastlog.ldf,并发送给客户。
第二步:使用远程协助,将主数据库master.mdf文件在客户端的计算机master22.mdf
的mastlog.ldf更名mastlog22.ldf
然后将发送的主数据库放入数据文件夹中。
第三步:启动SQLServer,因为当时有没有
截图,没有截图,这个时候你可以发现SQLServer已成功启动。
第四步:将我们的企业库
第五步:删除原有的业务数据库的用户gxhtsyrain
第六步:新登录用户gxhtsyrain和地图业务库
第七步:禁用SA用户
因为msdb数据库不更换,维修计划不丢失
错误日志
我看着SQL错误日志,发现以下错误
数据库中的master无法
启用服务中介,因为主人不一样的MSDB Service Broker相同。
NT
权限系统登录失败
因为我们没有使用服务
代理技术,这是不可忽视的数据库msdb可以忽略服务代理
和NT权限系统登录失败,在SQL Server 2008中的服务SID
介绍中
复制代码代码如下所示:
但我们不能认为这些SID的帐户,你可以很容易地删除其他登录像NT权限系统。
有些
应用程序,如VSS作者、Windows
自动更新等,仍然需要用服务启动帐户。
如果客户有一个SQLServer备份系统数据库的备份
我会这样做的:
第一步:首先,在自己的笔记本电脑上备份主数据库。
步骤二:把客户的master.bak到您的计算机
第三步:恢复客户的master.bak自身SQLServer
第四步:停止SQL服务和复制master.mdf和mastlog.ldf给客户
第五步:在客户端的计算机master22.mdf
重命名数据库master.mdf文件,和mastlog.ldf文件更名为mastlog22.ldf
第六步:然后将发送的主数据库放入数据文件夹中
第七步:启动SQLServer
总结
除了用户数据库的备份之外,系统数据库的备份也是非常重要的。
我们需要备份的两个数据库master和msdb
当时我们部署业务系统时,没有备份系统数据库,但实际上它是一本背后的教科书。
我的方法是基于我们的业务系统,使用SQLServer
维护计划的能力上面的解决方案。
如果你
经常使用SQLServer数据库的相关技术,也许我的解决方案是不是最好的。
我也希望你能提出你的观点和意见,或者你使用的方法比我的更快更好。