我正在尝试在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身份验证访问桌面上的文件?
答案 0 :(得分:6)
尝试将用户或 LOCAL SERVICE 的读取权限授予策略编辑器中的文件夹C:\ Documents and Settings \ Administrator \ Desktop \(右键单击文件夹,然后在“安全”选项卡中,单击“添加...然后高级... |立即查找
”答案 1 :(得分:0)
当您运行还原脚本时,它正在运行SQL Express的服务帐户的上下文中执行。转到服务管理控制台(或运行Services.msc)并查找SQL Express服务并查看其配置为在其下运行的帐户,然后查看桌面上文件的权限并确保该帐户具有读访问权限
答案 2 :(得分:0)
在SQL Server 2008R2 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;