我试图恢复在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身份验证在桌面上的文件的方法吗?
尝试给予读取权限到用户或LOCAL SERVICE到文件夹C:在你的策略编辑器\的Documents and Settings \ Administrator的\桌面\(右键单击该文件夹,并在安全选项卡单击添加...然后高级... |立即查找
当您运行还原脚本,它是在服务的上下文中执行帐户中的SQL Express下运行。 转至服务管理控制台(或运行services.msc),然后找到SQL快递服务,并期待在哪个帐户中,它被配置为下运行,然后查看文件的桌面上的权限,确保该帐户具有读取访问。
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