SQL Server: attach database without a log file



我已经卸载了我的SQL Server 2019并安装了SQL Server 2022 Express。我所有的数据库都在:

C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLDATA

我的新位置是:

C:Program FilesMicrosoft SQL ServerMSSQL16.MSSQLSERVERMSSQLDATA

直接从旧位置附加数据库会导致:

无法打开物理文件"C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLDATADBName.mdf"。操作系统错误5:"5(Access is denied.)".

然后我将.mdf文件复制到新的位置。但是试图从新的位置附加它,我得到一个类似的错误,但对于日志文件:

无法打开物理文件"C:Program FilesMicrosoft SQL ServerMSSQL15.MSSQLSERVERMSSQLDATA dbname_log .ldf"。操作系统错误5:"5(Access is denied.)".

我无法将日志文件复制到新位置,因为我的HD上没有足够的空间。

任何想法?

感谢

操作系统错误5:"5(Access is denied.)"。

SQL Server使用NTFS acl锁定数据文件夹。因此,您可以通过获取文件夹和文件的所有权并将完全控制权授予其他SQL Server实例来解决此问题。

SQL Server禁用文件的权限继承,因此您需要对每个文件授予其他SQL实例的完全控制权。如果你使用Windows Integrated Auth连接,你还需要授予自己对文件的完全控制权。

在我的测试中,在将mdf和ldf的完全控制权授予'NT ServiceMSSQLSERVER'和我的windows用户之后,我能够运行

CREATE DATABASE [Foo]
ON (FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL15.SQLEXPRESSMSSQLDATAFoo.mdf'  ),
(FILENAME = N'C:Program FilesMicrosoft SQL ServerMSSQL15.SQLEXPRESSMSSQLDATAFoo_log.ldf' )
for attach

从默认实例。您还可以移动(而不是复制)文件,而不需要额外的空间。

相关内容

  • 没有找到相关文章

最新更新