关于SQL2008只有MDF 还原数据库

时间:2021-07-25 21:55:50
额!!!今天看见数据库文件日志比较大 就想着把日志文件删除了,然后在附加上去。之前都是这么做的,也会自动创建出来新日志文件,但是今天就悲催了。附加不会去了提示信息


标题: Microsoft SQL Server Management Studio
------------------------------

附加数据库 对于 服务器“IMPRL-PC”失败。  (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1447.4+((KJ_RTM).100213-0103+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=附加数据库+Server&LinkId=20476

------------------------------
其他信息:

执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)

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

无法打开新数据库 'ShuJ'。CREATE DATABASE 中止。
文件激活失败。物理文件名称'D:\SqlServerData\ShuJ_log.ldf'可能不正确。
无法重新生成日志,原因是数据库关闭时存在打开的事务/用户,该数据库没有检查点或者该数据库是只读的。如果事务日志文件被手动删除或者由于硬件或环境问题而丢失,则可能出现此错误。 (Microsoft SQL Server,错误: 1813)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.00.1600&EvtSrc=MSSQLServer&EvtID=1813&LinkId=20476

明天我要去给人家演示这个系统呢。。就只有这一个库之前也没备份过  大神们救命啊

16 个解决方案

#1


这样做应该是没有问题的,建议你尝试换到另外一台机器试试,并且还原的路径一样
以后你清宁日志数据库命令清空,毕竟用你这种方法是不科学的

#2


这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user

#3


怎么样了,恢复了吗

#4


回复应该问题不大,多试就行了

#5


引用 2 楼 yupeigu 的回复:
这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user


http://bbs.csdn.net/topics/350077982 我看这个里面的试了一下 但是回不到多用户模式了啊
alter database ShuJ set multi_user 这句话执行成功但是是 显示的紧急模式 刷新 或重启数据库都不系那个 但是能看到里面的表 存储过程了

#6


引用 5 楼 nvllin1992 的回复:
Quote: 引用 2 楼 yupeigu 的回复:

这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user


http://bbs.csdn.net/topics/350077982 我看这个里面的试了一下 但是回不到多用户模式了啊
alter database ShuJ set multi_user 这句话执行成功但是是 显示的紧急模式 刷新 或重启数据库都不系那个 但是能看到里面的表 存储过程了


你试试,能不能备份数据库

#7


引用 6 楼 yupeigu 的回复:
Quote: 引用 5 楼 nvllin1992 的回复:

Quote: 引用 2 楼 yupeigu 的回复:

这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user


http://bbs.csdn.net/topics/350077982 我看这个里面的试了一下 但是回不到多用户模式了啊
alter database ShuJ set multi_user 这句话执行成功但是是 显示的紧急模式 刷新 或重启数据库都不系那个 但是能看到里面的表 存储过程了


你试试,能不能备份数据库

标题: Microsoft SQL Server Management Studio
------------------------------

备份 对于 服务器“”失败。  (Microsoft.SqlServer.SmoExtended)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=备份+Server&LinkId=20476

------------------------------
其他信息:

System.Data.SqlClient.SqlError: BACKUP DATABASE 不能用于以紧急模式打开的数据库。 (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&LinkId=20476


不行诶  但是可以打开表

#8


引用 7 楼 nvllin1992 的回复:
Quote: 引用 6 楼 yupeigu 的回复:

Quote: 引用 5 楼 nvllin1992 的回复:

Quote: 引用 2 楼 yupeigu 的回复:

这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user


http://bbs.csdn.net/topics/350077982 我看这个里面的试了一下 但是回不到多用户模式了啊
alter database ShuJ set multi_user 这句话执行成功但是是 显示的紧急模式 刷新 或重启数据库都不系那个 但是能看到里面的表 存储过程了


你试试,能不能备份数据库

标题: Microsoft SQL Server Management Studio
------------------------------

备份 对于 服务器“”失败。  (Microsoft.SqlServer.SmoExtended)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=备份+Server&LinkId=20476

------------------------------
其他信息:

System.Data.SqlClient.SqlError: BACKUP DATABASE 不能用于以紧急模式打开的数据库。 (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&LinkId=20476


不行诶  但是可以打开表



试试这个:

ALTER DATABASE ShuJ 
SET ONLINE
 

#9


引用 3 楼 yupeigu 的回复:
怎么样了,恢复了吗

ALTER DATABASE ShuJ SET ONLINE
这句话得执行多长时间啊  好几分钟了 没反应啊

#10


引用 9 楼 nvllin1992 的回复:
Quote: 引用 3 楼 yupeigu 的回复:

怎么样了,恢复了吗

ALTER DATABASE ShuJ SET ONLINE
这句话得执行多长时间啊  好几分钟了 没反应啊



这样,先把ssms关掉,然后再次打开ssms,执行如下的语句:

use master
go

ALTER DATABASE ShuJ SET ONLINE

#11


引用 10 楼 yupeigu 的回复:
Quote: 引用 9 楼 nvllin1992 的回复:

Quote: 引用 3 楼 yupeigu 的回复:

怎么样了,恢复了吗

ALTER DATABASE ShuJ SET ONLINE
这句话得执行多长时间啊  好几分钟了 没反应啊



这样,先把ssms关掉,然后再次打开ssms,执行如下的语句:

use master
go

ALTER DATABASE ShuJ SET ONLINE


一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。
日志文件 'D:\ShuJ_log.ldf' 与主文件不匹配。该文件可能来自另一数据库,或者可能以前重新生成了日志。

又不行了。。。。。这个库都打不开了

#12


或者:

alter database ShuJ
set online
with rollback immediate

#13


引用 11 楼 nvllin1992 的回复:
Quote: 引用 10 楼 yupeigu 的回复:

Quote: 引用 9 楼 nvllin1992 的回复:

Quote: 引用 3 楼 yupeigu 的回复:

怎么样了,恢复了吗

ALTER DATABASE ShuJ SET ONLINE
这句话得执行多长时间啊  好几分钟了 没反应啊



这样,先把ssms关掉,然后再次打开ssms,执行如下的语句:

use master
go

ALTER DATABASE ShuJ SET ONLINE


一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。
日志文件 'D:\ShuJ_log.ldf' 与主文件不匹配。该文件可能来自另一数据库,或者可能以前重新生成了日志。

又不行了。。。。。这个库都打不开了


你有qq不,方便的话,帮你看看

#14


或者试试这个:


--先得把数据库删除了,然后再附加

create   database   数据库名  on
( filename = N'路径名称.mdf')
for attach_rebuild_log
go

#15


引用 14 楼 yupeigu 的回复:
或者试试这个:


--先得把数据库删除了,然后再附加

create   database   数据库名  on
( filename = N'路径名称.mdf')
for attach_rebuild_log
go

嗯 我先试一下  太感谢你了  

#16


引用 14 楼 yupeigu 的回复:
或者试试这个:


--先得把数据库删除了,然后再附加

create   database   数据库名  on
( filename = N'路径名称.mdf')
for attach_rebuild_log
go

我QQ 963724743

#1


这样做应该是没有问题的,建议你尝试换到另外一台机器试试,并且还原的路径一样
以后你清宁日志数据库命令清空,毕竟用你这种方法是不科学的

#2


这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user

#3


怎么样了,恢复了吗

#4


回复应该问题不大,多试就行了

#5


引用 2 楼 yupeigu 的回复:
这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user


http://bbs.csdn.net/topics/350077982 我看这个里面的试了一下 但是回不到多用户模式了啊
alter database ShuJ set multi_user 这句话执行成功但是是 显示的紧急模式 刷新 或重启数据库都不系那个 但是能看到里面的表 存储过程了

#6


引用 5 楼 nvllin1992 的回复:
Quote: 引用 2 楼 yupeigu 的回复:

这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user


http://bbs.csdn.net/topics/350077982 我看这个里面的试了一下 但是回不到多用户模式了啊
alter database ShuJ set multi_user 这句话执行成功但是是 显示的紧急模式 刷新 或重启数据库都不系那个 但是能看到里面的表 存储过程了


你试试,能不能备份数据库

#7


引用 6 楼 yupeigu 的回复:
Quote: 引用 5 楼 nvllin1992 的回复:

Quote: 引用 2 楼 yupeigu 的回复:

这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user


http://bbs.csdn.net/topics/350077982 我看这个里面的试了一下 但是回不到多用户模式了啊
alter database ShuJ set multi_user 这句话执行成功但是是 显示的紧急模式 刷新 或重启数据库都不系那个 但是能看到里面的表 存储过程了


你试试,能不能备份数据库

标题: Microsoft SQL Server Management Studio
------------------------------

备份 对于 服务器“”失败。  (Microsoft.SqlServer.SmoExtended)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=备份+Server&LinkId=20476

------------------------------
其他信息:

System.Data.SqlClient.SqlError: BACKUP DATABASE 不能用于以紧急模式打开的数据库。 (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&LinkId=20476


不行诶  但是可以打开表

#8


引用 7 楼 nvllin1992 的回复:
Quote: 引用 6 楼 yupeigu 的回复:

Quote: 引用 5 楼 nvllin1992 的回复:

Quote: 引用 2 楼 yupeigu 的回复:

这样,你先把原来的.mdf文件备份一下,然后:

1、新建一个ShuJ数据库

2、关闭实例,把之前的.mdf文件复制到,新建数据库的.mdf文件所在的路径,覆盖新数据库的.mdf文件

3、启动实例,这个时候,数据库可能处于质疑状态,运行如下代码来修复,一个一个运行:

alter database ShuJ set emergency
go
alter database ShuJ set single_user
go

--开始修复
dbcc checkdb(ShuJ,REPAIR_ALLOW_DATA_LOSS)
go
dbcc checkdb(ShuJ,REPAIR_REBUILD)
go
dbcc checkdb(ShuJ)
go


--修改数据库为多用户模式
alter database ShuJ set multi_user


http://bbs.csdn.net/topics/350077982 我看这个里面的试了一下 但是回不到多用户模式了啊
alter database ShuJ set multi_user 这句话执行成功但是是 显示的紧急模式 刷新 或重启数据库都不系那个 但是能看到里面的表 存储过程了


你试试,能不能备份数据库

标题: Microsoft SQL Server Management Studio
------------------------------

备份 对于 服务器“”失败。  (Microsoft.SqlServer.SmoExtended)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=备份+Server&LinkId=20476

------------------------------
其他信息:

System.Data.SqlClient.SqlError: BACKUP DATABASE 不能用于以紧急模式打开的数据库。 (Microsoft.SqlServer.Smo)

有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&LinkId=20476


不行诶  但是可以打开表



试试这个:

ALTER DATABASE ShuJ 
SET ONLINE
 

#9


引用 3 楼 yupeigu 的回复:
怎么样了,恢复了吗

ALTER DATABASE ShuJ SET ONLINE
这句话得执行多长时间啊  好几分钟了 没反应啊

#10


引用 9 楼 nvllin1992 的回复:
Quote: 引用 3 楼 yupeigu 的回复:

怎么样了,恢复了吗

ALTER DATABASE ShuJ SET ONLINE
这句话得执行多长时间啊  好几分钟了 没反应啊



这样,先把ssms关掉,然后再次打开ssms,执行如下的语句:

use master
go

ALTER DATABASE ShuJ SET ONLINE

#11


引用 10 楼 yupeigu 的回复:
Quote: 引用 9 楼 nvllin1992 的回复:

Quote: 引用 3 楼 yupeigu 的回复:

怎么样了,恢复了吗

ALTER DATABASE ShuJ SET ONLINE
这句话得执行多长时间啊  好几分钟了 没反应啊



这样,先把ssms关掉,然后再次打开ssms,执行如下的语句:

use master
go

ALTER DATABASE ShuJ SET ONLINE


一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。
日志文件 'D:\ShuJ_log.ldf' 与主文件不匹配。该文件可能来自另一数据库,或者可能以前重新生成了日志。

又不行了。。。。。这个库都打不开了

#12


或者:

alter database ShuJ
set online
with rollback immediate

#13


引用 11 楼 nvllin1992 的回复:
Quote: 引用 10 楼 yupeigu 的回复:

Quote: 引用 9 楼 nvllin1992 的回复:

Quote: 引用 3 楼 yupeigu 的回复:

怎么样了,恢复了吗

ALTER DATABASE ShuJ SET ONLINE
这句话得执行多长时间啊  好几分钟了 没反应啊



这样,先把ssms关掉,然后再次打开ssms,执行如下的语句:

use master
go

ALTER DATABASE ShuJ SET ONLINE


一个或多个文件与数据库的主文件不匹配。如果是尝试附加数据库,请使用正确的文件重试该操作。如果这是现有数据库,则文件可能已损坏,应该从备份进行还原。
日志文件 'D:\ShuJ_log.ldf' 与主文件不匹配。该文件可能来自另一数据库,或者可能以前重新生成了日志。

又不行了。。。。。这个库都打不开了


你有qq不,方便的话,帮你看看

#14


或者试试这个:


--先得把数据库删除了,然后再附加

create   database   数据库名  on
( filename = N'路径名称.mdf')
for attach_rebuild_log
go

#15


引用 14 楼 yupeigu 的回复:
或者试试这个:


--先得把数据库删除了,然后再附加

create   database   数据库名  on
( filename = N'路径名称.mdf')
for attach_rebuild_log
go

嗯 我先试一下  太感谢你了  

#16


引用 14 楼 yupeigu 的回复:
或者试试这个:


--先得把数据库删除了,然后再附加

create   database   数据库名  on
( filename = N'路径名称.mdf')
for attach_rebuild_log
go

我QQ 963724743