我已经卸载了我的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
从默认实例。您还可以移动(而不是复制)文件,而不需要额外的空间。