【问题标题】:How do I attach a MSSQL 2000 database with only an MDF file如何仅使用 MDF 文件附加 MSSQL 2000 数据库
【发布时间】:2008-09-24 11:29:24
【问题描述】:

我有一台旧服务器,上面有一个已失效的 SQL 2000 评估版(从 2006 年开始),上面还有两个数据库。

由于某些未知原因,LDF 日志文件丢失。假定已删除。

我有以前存在于该服务器上的数据库的 mdf 文件(在一种情况下还有一个 ndf 文件),我正试图让它们在我坐的另一个 SQL 2000 机器上启动并运行。

sp_attach_db 抱怨日志文件丢失,并且不会附加数据库。试图通过使用来自同名数据库的日志文件来欺骗它的尝试惨遭失败。 sp_attach_single_file_db 也不起作用。 mdf 文件显然没有被完全分离。

我如何获得附加和可读的数据库?

【问题讨论】:

    标签: sql-server database recovery


    【解决方案1】:

    我找到了这个答案,它适用于我的 SQL 2000 机器:

    如何使用非干净分离的 MDF 文件附加数据库。

    第 1 步:创建一个同名的新数据库,并在新服务器上使用与旧数据库相同的文件。

    第 2 步:停止 SQL 服务器,并将您的 mdf 文件(以及您拥有的任何 ndf 文件)移动到您刚刚创建的新文件的顶部。删除所有日志文件。

    第 3 步:启动 SQL 并运行它以将数据库置于紧急模式。

    sp_configure 'allow updates', 1
    go
    reconfigure with override
    GO
    update sysdatabases set status = 32768 where name = 'TestDB'
    go
    sp_configure 'allow updates', 0
    go
    reconfigure with override
    GO
    

    第四步:重启SQL Server,观察DB成功进入紧急模式。

    第 5 步:运行此未记录的 dbcc 选项以重建日志文件(在正确的位置)

    DBCC REBUILD_LOG(TestDB,'D:\SQL_Log\TestDB_Log.LDF')
    

    第 6 步:您可能需要重置状态。即使你不这样做,这样做也不会造成任何伤害。

    exec sp_resetstatus TestDB
    

    第 7 步:停止并启动 SQL 以查看新恢复的数据库。

    【讨论】:

    • 之后我还不得不将其设置回多用户模式,因为由于某种原因它最终处于受限用户模式:ALTER DATABASE TestDB SET MULTI_USER
    【解决方案2】:

    在企业管理器中,右键单击服务器并选择附加数据库。选择 MDF 文件并单击确定。然后它会询问您是否要创建新的日志文件。说是。

    【讨论】:

    • 可悲的是,它仍然抱怨“物理文件名 blah.ldf 可能不正确”。当我尝试使用严重分离的 mdf 时。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多