SQL2005回复只有mdf文件的数据库
SQL2005恢复只有mdf文件的数据库
我把原来的数据库分离后,直接把日志文件给干掉了。原来在SQL 2000里经常这么干,只用一个mdf就附加了。没想到sql2005居然不行。我试验了一圈 终于找到一个成功的方法。转载,供后来者参考。
SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件
第一步:先建立一个同名数据库,停止SQL SERVER2005,将没有日志的的.mdf数据库文件覆盖刚新建的.mdf数据库文件,重新启动数据库。
第三步:在查询分析器中运行如下代码:
alter database 数据库名 set emergency —将数据库设置为紧急状态
use master
declare @databasename varchar(255)
set @databasename=‘数据库名’ —你的.mdf文件文件名
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’—将目标数据库置为多用户状态
执行出现“数据库其他多个文件与数据库主文件不匹配….”错误,再执行一次即可。
------解决方案--------------------
收藏 顶帖 接分。
------解决方案--------------------
学习。
------解决方案--------------------
顶
------解决方案--------------------
------解决方案--------------------
OR
------解决方案--------------------
推荐此贴的目的在于话题的引入,请大家继续讨论更多的方法
------解决方案--------------------
我把原来的数据库分离后,直接把日志文件给干掉了。原来在SQL 2000里经常这么干,只用一个mdf就附加了。没想到sql2005居然不行。我试验了一圈 终于找到一个成功的方法。转载,供后来者参考。
SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件
第一步:先建立一个同名数据库,停止SQL SERVER2005,将没有日志的的.mdf数据库文件覆盖刚新建的.mdf数据库文件,重新启动数据库。
第三步:在查询分析器中运行如下代码:
alter database 数据库名 set emergency —将数据库设置为紧急状态
use master
declare @databasename varchar(255)
set @databasename=‘数据库名’ —你的.mdf文件文件名
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’—将目标数据库置为多用户状态
执行出现“数据库其他多个文件与数据库主文件不匹配….”错误,再执行一次即可。
------解决方案--------------------
收藏 顶帖 接分。
------解决方案--------------------
学习。
------解决方案--------------------
顶
------解决方案--------------------
use master
go
sp_attach_single_file_db 'db_NAME',
'D:\db_NAME.mdf' --PATH
go
------解决方案--------------------
OR
CREATE DATABASE TestDB
ON
(
FILENAME ='D:\TestDB.mdf'
) for ATTACH_REBUILD_LOG
------解决方案--------------------
推荐此贴的目的在于话题的引入,请大家继续讨论更多的方法
------解决方案--------------------
/*
网上看到的整理了一下。
在SQL Server 7.0中,微软推出了sp_attach_db和sp_attach_single_file_db系统存储过程。
它对于SQL Server数据库管理员执行下面的任务是非常方便的:
1 使用sp_attach_db系统存储过程直接将.MDF和.LDF文件附加到服务器。
2 使用sp_attach_single_file_db系统存储过程只附加.MDF文件。
3 使用sp_detach_db将数据库从一个服务器分离,复制.MDF文件到另一个服务器上,然后使用
sp_attach_db系统存储过程重新附加这些文件到两个服务器上。
尽管它对于SQL Server数据库管理员是很有用的,但是在使用这两个存储过程时是有一些限制的。限制如下:
1 你不能附加多个日志文件
2 你不能附加16个以上的文件
在SQL Server 2008中,微软宣布上面的系统存储过程将在未来的版本中被废弃。而他们在"Create Database"
SQL语句中添加了一个从句"For Attach"。
下面介绍使用"For Attach"从句的多种方法,以克服在使用sp_attach_db和sp_attach_single_file_db时要面临的限制。
*/
--建立测试数据库
Use Master
go
CREATE DATABASE TestDB
ON
( NAME = TestDB,
FILENAME = 'D:\TestDB.mdf',
SIZE = 10,
MAXSIZE = 50,
FILEGROWTH = 5 )