将备份在移动硬盘的 mdf 数据库文件导入到 SQL Server 时失败并提示拒绝访问:
1 2 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
|
1 2 3 4 5 6 7 8 9
| Path : Microsoft.PowerShell.Core\FileSystem::D:\test.mdf Owner : 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
将这个文件的权限应用到所有待赋权的文件:
1 2
| $ownerACL = Get-Acl -Path "D:\test.mdf" Get-ChildItem -Path D:\ -Recurse -Include "*.?df" | Set-Acl -AclObject $ownerACL
|
再次导入数据库导入成功。问题解决。