如何仅使用 MDF 文件附加 MSSQL 2000 数据库

发布于 2024-07-06 13:00:47 字数 364 浏览 7 评论 0原文

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

由于某种未知原因,LDF 日志文件丢失。 估计被删了。

我有该服务器上曾经存在的数据库的 mdf 文件(在一种情况下还有 ndf 文件),并且我正在尝试让它们在我拥有的另一台 SQL 2000 机器上运行并运行。

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

如何获取附加且可读的数据库?

I have an old server with a defunct evaluation version of SQL 2000 on it (from 2006), and two databases which were sitting on it.

For some unknown reason, the LDF log files are missing. Presumed deleted.

I have the mdf files (and in one case an ndf file too) for the databases which used to exist on that server, and I am trying to get them up and running on another SQL 2000 box I have sitting around.

sp_attach_db complains that the logfile is missing, and will not attach the database. Attempts to fool it by using a logfile from a database with the same name failed miserably. sp_attach_single_file_db will not work either. The mdf files have obviously not been cleanly detached.

How do I get the databases attached and readable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薔薇婲 2024-07-13 13:00:47

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

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

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

第 2 步:停止 SQL Server,并将您的 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

第4步:重新启动SQL Server,观察数据库成功进入紧急模式。

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

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

步骤 6: 您可能需要重置状态。 即使你不这样做,这样做也不会有什么坏处。

exec sp_resetstatus TestDB

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

I found this answer, which worked with my SQL 2000 machines:

How to attach a database with a non-cleanly detached MDF file.

Step 1: Make a new database with same name, and which uses the same files as the old one on the new server.

Step 2: Stop SQL server, and move your mdf files (and any ndf files you have) over the top of the new ones you just created. Delete any log files.

Step 3: Start SQL and run this to put the DB in emergency mode.

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

Step 4: Restart SQL server and observe that the DB is successfully in emergency mode.

Step 5: Run this undocumented dbcc option to rebuild the log file (in the correct place)

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

Step 6: You might need to reset the status. Even if you don't, it won't do any harm to do so.

exec sp_resetstatus TestDB

Step 7: Stop and start SQL to see your newly restored database.

知足的幸福 2024-07-13 13:00:47

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

In Enterprise Manager, right-click the server and choose Attach Database. Select the MDF file and click Ok. It will then ask you if you want to create a new log file or not. Say Yes.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文