【问题标题】:how can i attach an MDF file to a server with the same LDF name?如何将 MDF 文件附加到具有相同 LDF 名称的服务器?
【发布时间】:2014-02-11 21:02:38
【问题描述】:

我有一个数据库的.MDF 备份。我需要来自 .MDF 的一些信息。

当我尝试附加此 .MDF 时,它需要随附的日志文件。

我不需要日志文件,但它坚持.LDF 文件。

我试图将它指向它附带的同一个日志文件,但我收到了错误:

(因为当前版本的数据库正在使用它。)

我无法将它附加到其他服务器,因为它最初位于 SQL Server 2012 上,而那是我唯一的 SQL Server 2012 服务器。

如何在没有.LDF 的情况下重新附加.MDF

我正在添加一个文本版本,以防其他人正在寻找此问题的解决方案:

消息 5120,第 16 级,状态 101,第 1 行
无法打开物理文件“D:\SQL Logs....Custom_log.ldf”。操作系统错误 32:“32(该进程无法访问该文件,因为它正被另一个进程使用。)”。
文件激活失败。物理文件名“D:\SQL Logs....Custom_log.ldf”可能不正确。
无法重建日志,因为数据库关闭时有打开的事务/用户,数据库没有发生检查点,或者数据库是只读的。如果由于硬件或环境故障而手动删除或丢失事务日志文件,则可能会发生此错误。

消息 1813,第 16 级,状态 2,第 1 行
无法打开新数据库“TestDb”。 CREATE DATABASE 已中止。

我不知道这是否相关,但如果我不需要,我实际上不需要附加.MDF 文件。我只需要从那里读取一张表。

【问题讨论】:

  • 我已经在这里尝试了所有 3 个建议:blog.sqlauthority.com/2010/04/26/…
  • 您似乎没有正确分离它,因此文件状态不一致,您无法重新附加它。 MDF 文件不是备份。如果需要备份,请运行备份命令。您能解释一下“由于当前版本的数据库正在使用它”是什么意思吗?你的意思是你试图附加一个 MDF 文件和一个 LDF 已经存在同名并且正在使用中?如果是这种情况,为什么不尝试重命名 MDF 并附加它,这样它就不会尝试创建同名的 LDF?
  • @ElectricLlama 我有一个数据库,并且我有一个旧的 MDF 数据库。我正试图从旧的 MDF 中抢一张桌子。这有意义吗?
  • 文件D:\SQL Logs\....Custom_log.ldf在您尝试附加MDF之前是否已经存在于SQL Server上?
  • 您肯定需要将 MDF 附加到数据库服务器才能取出表,所以让我们专注于附加 MDF 而不出错。

标签: sql sql-server tsql


【解决方案1】:

如果您使用 2012 使用"FOR ATTACH_FORCE_REBUILD_LOG"

  CREATE DATABASE [XXXdatabasname] ON 
( FILENAME = N'databaseXXXFilePath.mdf' )
 FOR ATTACH_FORCE_REBUILD_LOG

【讨论】:

  • 它在 SQL Server 2014 速成版上为我工作我收到以下错误“无法重建日志,因为数据库关闭时有打开的事务/用户,数据库没有发生检查点,或者数据库是只读的。如果由于硬件或环境故障而手动删除或丢失事务日志文件,则可能会发生此错误。"
【解决方案2】:

您可以附加没有相应 LDF 文件的 MDF 文件。为此,我会使用sp_attach_single_file_db

【讨论】:

  • 无法打开物理文件“.._log.ldf”。操作系统错误 32:“32(该进程无法访问该文件,因为它正被另一个进程使用。)”。文件激活失败。物理文件名“.._log.ldf”可能不正确。无法重建日志,因为数据库关闭时有打开的事务/用户,数据库没有发生检查点,或者数据库是只读的。如果事务日志文件由于硬件或环境故障而被手动删除或丢失,则可能会发生此错误。无法打开新数据库“TestDb”。 CREATE DATABASE 已中止。
猜你喜欢
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 1970-01-01
  • 2010-12-21
相关资源
最近更新 更多