Sql Server-附加通过加密文件系统(EFS)加密的 mdf 文件时出错

Sql Server-附加通过加密文件系统(EFS)加密的 mdf 文件时出错

我在尝试附加一个数据库时收到错误,该数据库的文件之前已通过 EFS 加密。实际错误消息是

Msg 5120, Level 16, State 101, Line 9
Unable to open the physical file "C:\test.mdf". Operating system error 5: "5(Access is denied.)".

如果我解密文件,那么我就可以成功附加数据库。我使用的是运行 sqlserver 服务的同一本地用户帐户。有什么想法吗?(我之前在 stackoverflow 上问过这个问题,但我得到的评论说它属于这里)

答案1

您确定您用于 SQL Server 的服务帐户与您用于加密文件的用户帐户匹配吗?EFS 在操作系统上处理,对 SQL Server 是透明的。

如果是这种情况,请检查常规 NTFS 权限,确保服务帐户对您尝试附加的文件具有完全控制权。可能这是显而易见的,但您应该始终检查油箱里是否有汽油,不要想当然!

如果你使用 SQL Server 2008 Enterprise,那么你应该调查使用透明数据加密(TDE)而不是EFS,它具有更好的性能并且更易于管理。

答案2

检查 NTFS 权限(正如 Nick 所说)并确保 SQL Server 可以使用服务运行所用的帐户以及用于连接 SQL Server 的帐户访问文件。

当您分离数据库时SQL Server 自动删除除分离数据库的人员之外的所有人对文件的权限。

答案3

不要将 EFS 与 SQL Server 一起使用。如果你必须使用操作系统级加密,然后使用 BitLocker。否则,使用 SQL Server 自己的 TDE。使用 SQL Server 的 EFS表现糟糕

答案4

当文件正在使用时,EFS 也不会对文件进行真正的加密。它只会在文件流关闭后加密物理数据,这意味着您必须关闭 SQL Server 才能加密文件。文件在访问时被解密,并以未加密的形式存储在系统缓存和内存中。只需记住这一点。

在我看来,这更像是权限问题,与 EFS 无关。您是否尝试过将文件移动到 SQL Server 数据目录文件夹,看看是否可以在该服务器上访问它?我们在测试权限问题时经常使用这种方法。如果服务器可以从那里附加它,我们就知道原始位置存在权限问题。

相关内容