当事务日志太大时我们有时会通过分离附加的方式清除LOG文件,正常情况下,清除LOG后,附加都会成功,但是有些时候可能数据文件破坏或者分离异常等诸多原因导致无法正常附加,附加时报错:设备激活错误。
物理文件名'C:\Program Files\Microsoft SQL Server\MSSQL\data\DSCSYS_Log.LDF '可能有误。
解决方法(以数据库DSCSYS为例):
1.将原先的数据文件DSCSYS_data.mdf备份到其他路径下或者重命名,建立新的数据库
DSCSYS,这样就会在相同路径下新生成DSCSYS_data.mdf和DSCSYS_Log.LDF
2.停止服务管理器,删除新生成的DSCSYS_Log.LDF,并将原先的数据文件
DSCSYS_data.mdf恢复覆盖新生成的DSCSYS_data.mdf
切记:此处不可通过分离的方式执行删除和覆盖动作,否则后续无法成功附加
3.启动服务管理器,打开企业管理器,我们会看到数据库DSCSYS处于“置疑”状态,这
时候不能对数据库做任何的操作
4.设置数据库允许之行操作系统表,进入企业管理器,打开SQL Server属性,选择服务器
设置,勾选“允许对系统目录直接进行修改”,也可以通过如下语句实现,
USE MASTER
GO
SP_CONFIGURE 'ALLOW UPDATES',1
GO
RECONFIGURE WITH OVERRIDE
执行该语句时,有时可能因为SQL Server本身的原因,会报错配置选项'ALLOW UPDATES' 不存在,也可能是高级选项。
此时还是建议采用进入企业管理器勾选“允许对系统目录直接进行修改”
5.设置DSCSYS为紧急修复模式
UPDATE SYSDA TABASES SET STATUS =32768 WHERE NAME='DSCSYS' 执行该语句后我们看到执行结果为:
影响1行
6.重建数据库日志文件
dbcc
rebuild_log('DSCSYS','C:\ProgramFiles\MicrosoftSQLServer\MSSQL\data\DSCSYS_Log.LDF ') 执行该语句后我们看到执行结果为:
数据库'DSCSYS ' 的日志已重建。
已失去事务的一致性。
应运行DBCC CHECKDB以验证物理一致性。
将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。
如果DBCC输出了错误信息,请与系统管理员联系。
7.验证数据库一致性(可省略)
dbcc checkdb( 'test ')
执行该语句后我们看到执行结果为:
CHECKDB 发现了0 个分配错误和0 个一致性错误(在数据库'DSCSYS' 中)。
DBCC 执行完毕。
如果DBCC 输出了错误信息,请与系统管理员联系。
8.设置数据为正常状态。
进入企业管理器我们发现数据库DSCSYS(只供DBO使用),若要取消该限制,则打开DSCSYS属性,“选项”页签,去掉“限制访问”,故障还原模型选择“简单”,确定即可。
9.最后一步,我们要将步骤4中的设置恢复,当然我们可以通过进入企业管理器去掉“允
许对系统目录直接进行修改”的勾,也可以通过如下语句完成
SP_CONFIGURE 'ALLOW UPDATES',0
GO
RECONFIGURE WITH OVERRIDE
切记:因直接操作系统目录是一件比较危险的动作,故此项务必记得恢复设置
10.至此,数据库已成功附加
PS:执行语句时,有时候因为数据库有设置区分大小写,所以执行时务必保证大小写字母的正确性,若没有设置区分大小写,则无关紧要。
同理,若有时候客户传数据库到本地不是BAK,而是MDF文件的话,其操作方法同上10个步骤即可成功在本地恢复数据库。
切记:若客户不能正常附加,出现上述错误,我们不可以将MDF文件传到本地附加成功后,将LDF发给客户,此操作必须在客户的数据库上才能操作成功。
一、是否修改了操作系统密码?
--修改操作系统密码,导致SQL不能启动的解决办法:
1.
我的电脑--控制面板--管理工具--服务--右键MSSQLSERVER--属性--登陆--登陆身份--选择"
本地系统帐户"
或:
2.
我的电脑--控制面板--管理工具--服务--右键MSSQLSERVER--属性--登陆--登陆身份--选择"此帐户"--密码和确认密码中输入你修改后的administrator密码.
两者的区别:
选择第一种方式,以后修改了administrator密码,不用再调整(但要求登陆操作系统的是系统管理员)
选择第二种方式,以后修改了administrator密码,还要再重复做上面的操作.
二、是否修改了计算机名?
如果是修改了计算机名,则放入SQL安装光盘,执行安装程序进行修复(修复过程自动进行,照提示操作就行了,不会破坏数据,也很快)
三、检查一下你安装的是否评估版? 如果是的话,可能已经过期,安装一个正式版吧.
检查方法是安装sql sp3,如果是评估版,会有错误提示,不能安装。