对于在MS SQL Server2005中创建的数据库,我有一个MDF文件,但没有LDF文件。当我尝试将MDF文件附加到其他SQL Server时,收到以下错误消息。
The log cannot be rebuilt because there were open transactions/users when the database was shutdown, no checkpoint occurred to the database, or the database was read-only. This error could occur if the transaction log file was manually deleted or lost due to a hardware or environment failure.
我希望完成以下任一选项:
我可以尝试哪些SQL命令来让我的数据库再次运行?
发布于 2013-05-28 17:33:02
下面的详细信息涵盖了第2部分和第3部分,以防重新创建日志不起作用,如果MDF文件被损坏,就会发生这种情况。
你只能通过一些第三方工具读取MDF文件来恢复数据和结构,这些工具可以对写成二进制数据的内容进行解码,但即使使用这样的工具,你也不能总是完全完成这项工作。
在这种情况下,您可以尝试使用ApexSQL Recover。据我所知,这是唯一可以做这种工作的工具,但它相当昂贵。
更好的办法是尝试从任何旧备份中恢复这些备份。
发布于 2009-04-21 15:11:21
来自SQL Server论坛Attaching MDF without LDF上的帖子
如果要连接不带LDF的MDF,可以按照以下步骤进行操作,它已经过测试,工作正常
中使用日志文件
Sp_configure“允许更新”,1 go Reconfigure with override GO更新系统数据库set status = 32768 where name = "BadDbName“go Sp_configure "allow updates",0 go Reconfigure with override GO
DBCC REBUILD_LOG(dbname,'c:\dbname.ldf') --未记录的创建新日志文件的步骤。
(根据您的要求替换dbname和log文件名)
更新: DBCC REBUILD_LOG不存在SQL2005及更高版本。这应该是可行的:
USE [master]
GO
CREATE DATABASE [Test] ON
(FILENAME = N'C:\MSSQL\Data\Test.mdf')
FOR ATTACH_REBUILD_LOG
GO
发布于 2009-04-22 03:05:39
您是否尝试过忽略ldf而只连接mdf:
sp_attach_single_file_db @dbname = 'dbname‘,@physname = 'physical_name’
我不知道您打开的事务(可能只是丢失)会发生什么,但它可能会让您的数据恢复在线。
-don
https://stackoverflow.com/questions/773059
复制相似问题