语言吧技术网欢迎您投稿,程序员的世界我懂你!=====>点此登录投搞
当前位置: 首页 >>数据库 >>MSSQL >>sqlserver数据库标注为可疑的解决办法

sqlserver数据库标注为可疑的解决办法

2019/4/30 17:08:12 0人评论 56次 作者:admin

前几天客户那边的服务器死机了,然后客户强制关机,重新启动服务器后,系统就没法正常使用,连接不上服务器,我远程操作后,看到数据库标注为可疑,由于客户之前没备份数据库,看来只能是修复了:…

前几天客户那边的服务器死机了,然后客户强制关机,重新启动服务器后,系统就没法正常使用,连接不上服务器,我远程操作后,看到数据库标注为可疑,由于客户之前没备份数据库,看来只能是修复了:

方法一:

1:停止数据库服务,将可疑的数据库及日志备份到别的文件夹,随后删除数据库文件及日志文件

2:打开数据库服务,连接数据库后删除可疑的数据库,并新建同名的数据库(目录位原来的目录)

3:停止数据库服务,将备份的数据库文件替换新建的数据库文件(日志文件不需要替换)

4:打开数据库服务,连接数据库后执行“alter database 数据库名 set emergency”,将数据库改为紧急模式, 执行后,为了保险起见,重新停止、开启的SQLSERVER服务,再打开数据库,已经可以看到里面的内容了,如表,视图,存储过程等,数据库名称后有紧急标志,能看到数据库结构,但无法进行备份等操作

5:执行“ALTER DATABASE 数据库名 SET SINGLE_USER”,将数据库设为单用户模式

6:对数据库进行检查修复“dbcc checkdb(数据库名,REPAIR_ALLOW_DATA_LOSS)”,(这里有个很奇怪的现象,最早开始修复的时候,数据库130多G,这一步执行了6个多小时,昨天修复的时候,数据库打到了160G,这一步只执行了43分钟,不知道怎么回事),执行完成后会看到提示错误,不用管,操作后,仍然停止启动SQLSERVER服务(不确定是否需要,我只是为了想无干扰查看执行后的数据库状况)重新打开数据库,已经是正常状态了,没有应急提示了

7:取消单用户模式 “ALTER DATABASE 数据库名 SET MULTI_USER ”

至此,数据库修复完毕,被标记为“可疑”的数据库已恢复正常状态。


方法二:

参考恢复方法:

1、停止数据库服务。

2、将需要恢复的数据库文件复制到另外的位置。

3、启动数据库服务。

4、确认要恢复的数据库文件已经成功复制到另外的位置,然后在SQL Server Management Studio中删除要恢复的数据库。

5、新建同名的数据库(数据库文件名也要相同)。

6、停止数据库服务。

7、用第2步中备份的.mdf文件覆盖新数据库的同名文件。

8、启动数据库服务。

9、运行alter database dbname set emergency,将数据库设置为emergency mode

10、运行下面的命令就可以恢复数据库:

use master 

declare @databasename varchar(255)

set @databasename='你的数据库名' 

exec sp_dboption @databasename, N'single', N'true'--将目标数据库置为单用户状态 

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态


---------------------------------------------------------------------------------------------------------- 

如果你一切都顺得的话就如上的步骤就可以成功了,下面我们将对特殊的状态进行分析

----------------------------------------------------------------------------------------------------------

1、一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。

日志文件 'E:/Program Files/Microsoft SQL Server 2005/MSSQL.1/MSSQL/DATA/dnt2_db_log.ldf' 与主文件不匹配。该文件可能来自另一数据库,或者可能以前重新生成了日志。

消息 5123,级别 16,状态 1,第 5 行

尝试打开或创建物理文件 'F:/项目/爱社区/数据库/dnt2_db_log.ldf' 时,CREATE FILE 遇到操作系统错误 3(系统找不到指定的路径。)。

消息 5024,级别 16,状态 2,第 5 行

在 sysfiles1 中找不到主日志文件所对应的条目。无法重建日志。

消息 5028,级别 16,状态 2,第 5 行

系统无法激活足够的数据库来重建日志。


解决方案:手动创建E:/Program Files/Microsoft SQL Server 2005/MSSQL.1/MSSQL/DATA目录就可以了,然后再执行


上述第10步步骤,就会在E:/Program Files/Microsoft SQL Server 2005/MSSQL.1/MSSQL/DATA产生一个日志文件。数据库就可以正常使用了


----------------------------------------------------------

2、另外值得说说的就是,如果该数据在备份时发生

System.Data.SqlClient.SqlError: 在处理 'BackupMetadata' 元数据(数据库 ID 6,文件 ID 65537)时出错。 (Microsoft.SqlServer.Smo),说明在附加过程中没有产生全文索引文件


解决方法:

右键数据库->属性->文件->选择使用全文索引

如果执行正常那么就可以直接进行备份操作了。


相关文章

CopyRight:2007-2018 语言吧 备案ICP:湘ICP备09009000号-4 http://www.yuyanba.com
分享按钮