SQL Server:附加不带日志文件的数据库

rur96b6h  于 2023-01-01  发布在  SQL Server
关注(0)|答案(1)|浏览(357)

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

C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA

我的新位置是:

C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA

直接从旧位置附加数据库会导致:
无法打开物理文件"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\DBName.mdf"。操作系统错误5:5(访问被拒绝。)。
然后我将.mdf文件复制到新位置,但尝试从新位置附加它时,我得到了类似的错误,但对于日志文件:
无法打开物理文件"C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA\数据库名称_日志. ldf"。操作系统错误5:5(访问被拒绝。)。
我无法将日志文件复制到新位置,因为我的硬盘上没有足够的空间。
你知道吗?
谢啦,谢啦

osh3o9ms

osh3o9ms1#

操作系统错误5:5(访问被拒绝。)。
SQL Server使用NTFS ACL锁定数据文件夹。因此,您可以通过获取文件夹和文件的所有权并将完全控制权限授予其他SQL Server示例来解决此问题。
SQL Server禁用文件上的权限继承,因此您需要向其他SQL示例授予对每个文件的完全控制权。如果您使用Windows集成身份验证进行连接,则还需要向自己授予对文件的完全控制权。
在我的测试中,在将mdf和ldf的完全控制权授予"NT Service\MSSQLSERVER"和我的Windows用户之后,我能够运行

CREATE DATABASE [Foo]
 ON (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\Foo.mdf'  ),
    (FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL15.SQLEXPRESS\MSSQL\DATA\Foo_log.ldf' )
for attach

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

相关问题