Sql Server – 错误附加mdf文件encryption通过encryption文件系统(EFS)

我收到一个错误,试图附加一个数据库,其文件以前通过EFSencryption。 真正的错误信息是

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中询问过这个问题,但是我得到了它在这里的意见)

您确定您用于SQL Server的服务帐户与用于encryption文件的用户帐户相匹配吗? EFS在OS上处理,对SQL Server透明。

如果是这种情况,请检查一般的NTFS权限,确保服务帐户完全控制您要附加的文件。 可能是明显的,但你应该经常检查坦克里有没有气体,不要假设!

如果您使用的是SQL Server 2008 Enterprise,那么您应该使用透明数据encryption (TDE)而不是EFS进行调查,这样会有更好的性能和更好的pipe理。

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

分离数据库时, SQL Server会自动删除除分离数据库的人以外的所有文件的权限。

不要使用EFS与SQL Server。 如果您必须使用操作系统级encryption,请使用BitLocker。 否则,使用SQL Server自己的TDE。 与SQL Server的EFS 执行可观的 。

当文件正在使用时,EFS也不会对文件进行真正的encryption。 它只会在文件streamclosures后encryption物理数据,这意味着您必须closuresSQL Server来encryption文件。 该文件在访问时被解密,并存储在系统caching和未encryption的存储器中。 只是要记住的东西。

这对我来说听起来更像是一个权限问题,与EFS无关。 你有没有尝试将文件移动到SQL Server数据目录文件夹,看看它是否可以在服务器上访问? 当我们testing权限问题时,我们使用了这个function。 如果服务器可以从那里附加,我们知道原来的位置有一个权限问题。