恢复方法:
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'--将目标数据库置为多用户状态
但这个脚本在sql server 2012下运行不了,出错的,请教sql2012下,这个脚本如何改写?
或者有其它方法,能在sql server 2012 下,恢复日志文件损坏的数据库
15 个解决方案
#1
不要日志文件,直接分离,然后删除日志文件,然后再附加,数据库会自动配置一个日志文件。
#2
如果需要数据库日志文件,按以下操作:
1、导出数据库的结构,重建一个数据库,
2、将数据导入到这个数据库,
3、把名字改成旧数据库的名字。
注意:做以上步骤前最好备份数据库。
1、导出数据库的结构,重建一个数据库,
2、将数据导入到这个数据库,
3、把名字改成旧数据库的名字。
注意:做以上步骤前最好备份数据库。
#3
没用,没有日志文件,根本无法附加数据库上去
#4
重建日志也不行???
#5
sql 2012 不会自动重建日志的
#6
晕倒,你直接分离数据库,然后删除日志文件,然后再附加数据库,就可以了啊,
#7
如果再不行,那就建一个新的数据库,把旧数据库的结构复制过去,然后倒入数据
#8
对sql 2012无效,老版本是否可以我不确定
#9
问题时,损坏日志的数据库我已经分离备份,所以现在老数据库我根本进不去了,也无法再次附加。
所以你的第二种方式,目前我已经无法进行了
#10
http://www.cnblogs.com/ATree/archive/2010/05/16/Sqlserver2005-mdf-ldf.html
#11
55555~~~~~ sql 2012 不支持函数 Sp_dboption
#12
lz 你尝试一下这个呢
CREATE DATABASE DB_NAME
ON (FILENAME = 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\DBName.MDF')
FOR ATTACH_REBUILD_LOG ;
GO
#13
如果数据库不是干净的分离是无法重建LOG的
http://blog.csdn.net/smithliu328/article/details/7983002
http://blog.csdn.net/smithliu328/article/details/7983002
#14
也可以尝试一下
sp_attach_single_file_db @dbname= 'bs_Data', @physname= 'F:\bs_Data.mdf'
sp_attach_single_file_db @dbname= 'bs_Data', @physname= 'F:\bs_Data.mdf'
#15
不会吧,我记得在2005上面都可以操作啊。
#1
不要日志文件,直接分离,然后删除日志文件,然后再附加,数据库会自动配置一个日志文件。
#2
如果需要数据库日志文件,按以下操作:
1、导出数据库的结构,重建一个数据库,
2、将数据导入到这个数据库,
3、把名字改成旧数据库的名字。
注意:做以上步骤前最好备份数据库。
1、导出数据库的结构,重建一个数据库,
2、将数据导入到这个数据库,
3、把名字改成旧数据库的名字。
注意:做以上步骤前最好备份数据库。
#3
不要日志文件,直接分离,然后删除日志文件,然后再附加,数据库会自动配置一个日志文件。
没用,没有日志文件,根本无法附加数据库上去
#4
重建日志也不行???
#5
sql 2012 不会自动重建日志的
#6
晕倒,你直接分离数据库,然后删除日志文件,然后再附加数据库,就可以了啊,
#7
如果再不行,那就建一个新的数据库,把旧数据库的结构复制过去,然后倒入数据
#8
晕倒,你直接分离数据库,然后删除日志文件,然后再附加数据库,就可以了啊,
对sql 2012无效,老版本是否可以我不确定
#9
如果再不行,那就建一个新的数据库,把旧数据库的结构复制过去,然后倒入数据
问题时,损坏日志的数据库我已经分离备份,所以现在老数据库我根本进不去了,也无法再次附加。
所以你的第二种方式,目前我已经无法进行了
#10
http://www.cnblogs.com/ATree/archive/2010/05/16/Sqlserver2005-mdf-ldf.html
#11
http://www.cnblogs.com/ATree/archive/2010/05/16/Sqlserver2005-mdf-ldf.html
55555~~~~~ sql 2012 不支持函数 Sp_dboption
#12
http://www.cnblogs.com/ATree/archive/2010/05/16/Sqlserver2005-mdf-ldf.html
55555~~~~~ sql 2012 不支持函数 Sp_dboption
lz 你尝试一下这个呢
CREATE DATABASE DB_NAME
ON (FILENAME = 'D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\DBName.MDF')
FOR ATTACH_REBUILD_LOG ;
GO
#13
如果数据库不是干净的分离是无法重建LOG的
http://blog.csdn.net/smithliu328/article/details/7983002
http://blog.csdn.net/smithliu328/article/details/7983002
#14
也可以尝试一下
sp_attach_single_file_db @dbname= 'bs_Data', @physname= 'F:\bs_Data.mdf'
sp_attach_single_file_db @dbname= 'bs_Data', @physname= 'F:\bs_Data.mdf'
#15
不会吧,我记得在2005上面都可以操作啊。