1

我正在尝试在 SQL Express 中恢复 .BAK 文件之前执行此 SQL 查询。最初,我在我的用户帐户的桌面上有该文件。我以管理员身份登录。

当我尝试像这样访问桌面上的 .BAK 文件时

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

我得到一个错误。

消息 3201,第 16 层,状态 2,第 1 行
无法打开备份设备“C:\Documents and Settings\Administrator\Desktop\file.bak”。操作系统错误 5(拒绝访问。)。
消息 3013,第 16 级,状态 1,第 1 行
RESTORE FILELIST 异常终止。

但是,当我将 .BAK 文件移动到C:\temp,并执行此

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

它工作得很好。

我无法弄清楚发生了什么。有没有办法使用带有 SQL Express 的 Windows 身份验证访问桌面上的文件?

4

3 回答 3

6

尝试在策略编辑器中授予用户本地服务对文件夹 C:\Documents and Settings\Administrator\Desktop\ 的读取权限(右键单击该文件夹,然后在安全选项卡中单击添加...,然后单击高级...|立即查找

于 2008-10-28T07:02:22.157 回答
0

当您运行恢复脚本时,它是在运行 SQL Express 的服务帐户的上下文中执行的。转到服务管理控制台(或运行 Services.msc)并找到 SQL Express 服务并查看它配置为在哪个帐户下运行,然后查看桌面上文件的权限并确保该帐户具有读取权限.

于 2008-10-28T10:37:56.480 回答
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;
于 2018-11-28T12:38:06.890 回答