将备份在移动硬盘的 mdf 数据库文件导入到 SQL Server 时失败并提示拒绝访问:
| 12
 3
 4
 
 | 消息 5120,级别 16,状态 101,第 1 行无法打开物理文件“D:\test.mdf”。操作系统错误 5:“5(拒绝访问。)”。
 消息 1802,级别 16,状态 7,第 1 行
 CREATE DATABASE 失败。无法创建列出的某些文件名。请查看相关错误。
 
 | 
感觉是文件权限的问题。用 Get-Acl 看一下权限信息
| 1
 | get-acl D:\test.mdf | format-list
 | 
| 12
 3
 4
 5
 6
 7
 8
 9
 
 | Path   : Microsoft.PowerShell.Core\FileSystem::D:\test.mdfOwner  : MYMACHINE\MYUSERNAME
 Group  : MYMACHINE\MYUSERNAME
 Access : BUILTIN\Administrators Allow  FullControl
 NT AUTHORITY\SYSTEM Allow  FullControl
 NT AUTHORITY\Authenticated Users Allow  Modify, Synchronize
 BUILTIN\Users Allow  ReadAndExecute, Synchronize
 Audit  :
 Sddl   :
 
 | 
应该是没有对这个文件赋权导致的。可以先手动对一个 mdf 文件添加当前用户的权限,
 
然后用 Set-Acl 将这个文件的权限应用到所有待赋权的文件:
| 12
 
 | $ownerACL = Get-Acl -Path "D:\test.mdf"Get-ChildItem -Path D:\ -Recurse -Include "*.?df" | Set-Acl -AclObject $ownerACL
 
 | 
再次导入数据库导入成功。问题解决。