为什么我不能从.bak文件阅读使用SQL Express在Windows身份验证模式我的桌面(Why

2019-10-20 07:44发布

我试图恢复在SQL Express的一个.bak文件之前执行该SQL查询。 起初,我对我的用户帐户的桌面文件。 我作为管理员登录。

当我尝试访问桌面这样的.bak文件

RESTORE FILELISTONLY FROM DISK= 'C:\Documents and Settings\Administrator\Desktop\file.bak'

我得到一个错误。

Msg 3201, Level 16, State 2, Line 1
Cannot open backup device 'C:\Documents and Settings\Administrator\Desktop\file.bak'. Operating system error 5(Access is denied.).
Msg 3013, Level 16, State 1, Line 1
RESTORE FILELIST is terminating abnormally.

然而,当我移动.bak文件到C:\temp ,并执行此

RESTORE FILELISTONLY FROM DISK= 'C:\temp\file.bak'

它工作得很好。

我无法弄清楚到底是怎么回事。 是否有访问与SQL Express的使用Windows身份验证在桌面上的文件的方法吗?

Answer 1:

尝试给予读取权限到用户LOCAL SERVICE到文件夹C:在你的策略编辑器\的Documents and Settings \ Administrator的\桌面\(右键单击该文件夹,并在安全选项卡单击添加...然后高级... |立即查找



Answer 2:

当您运行还原脚本,它是在服务的上下文中执行帐户中的SQL Express下运行。 转至服务管理控制台(或运行services.msc),然后找到SQL快递服务,并期待在哪个帐户中,它被配置为下运行,然后查看文件的桌面上的权限,确保该帐户具有读取访问。



Answer 3:

SQL服务器2008 R2 SP1之后,你不需要去服务管理控制台(或运行services.msc)来找出SQL Server服务在其下运行的帐户。

简单地使用下面的代码:

select * from
sys.dm_server_services

SELECT  DSS.servicename,
        DSS.startup_type_desc,
        DSS.status_desc,
        DSS.last_startup_time,
        DSS.service_account,
        DSS.is_clustered,
        DSS.cluster_nodename,
        DSS.filename,
        DSS.startup_type,
        DSS.status,
        DSS.process_id
FROM    sys.dm_server_services AS DSS;


文章来源: Why can't I read from .BAK files on my Desktop using SQL Express in Windows Authentication Mode