备份权限

时间:2012-04-28 19:09:55

标签: sql-server sql-server-2008 database-backups

我在服务器上创建了一个将访问某些数据库的新用户。

但是当我去备份或恢复数据库时,我收到错误:

  

C:\ Program Files \ Microsoft SQL   Server \ MSSQL10.MSSQLSERVER \ MSSQL \ Backup
无法访问   服务器上指定的路径或文件。确认你有   必要的安全权限和路径或文件   存在.....................

错误显示系统中的任何其他路径。即使用户和服务帐户具有完全控制权限的那些。

但是,如果我输入完整路径并单击“确定”,则会抱怨它无法显示,但它会备份或还原数据库。只是不显示路径的树视图。

如果我使用sa帐户执行操作,则对话框会显示所有路径而无需投诉。

PS:已将用户添加到db_backoperator角色。

需要什么权限?

4 个答案:

答案 0 :(得分:17)

db_backupoperator 是数据库角色,而不是服务器角色或Windows权限。它仅授予用户对数据库的必要访问权限以进行备份。它不授予服务器文件结构的任何权限,这是实际制作备份文件所必需的。

IIRC,要访问文件结构进行备份,用户必须已具有访问它的Windows /域权限,或者具有服务器角色 sysadmin 才能获取SQL Server自己的Windows访问权限。

此外,要实际还原数据库,用户需要服务器角色 dbcreator

答案 1 :(得分:17)

您是使用SQL身份验证登录还是Windows登录进行连接?如果是SQL身份验证登录,您如何将该SQL登录“完全控制权限”授予Windows中的文件夹? Windows不知道您在SQL Server中创建的任何SQL身份验证登录。请告诉我们“我在服务器上创建了一个用户”的意思 - 用户是什么?什么服务器? SQL Server或Windows?

作为一种变通方法,您还可以创建一个作为sa执行的存储过程或作为sysadmin组一部分的Windows登录,并为该权限较低的用户提供执行能力。但是,我可以通过添加一个没有其他权限的peon用户来备份数据库,只需将它们添加到db_backupoperator角色:

CREATE LOGIN peon WITH PASSWORD = 'foo', CHECK_POLICY = OFF;
GO
CREATE DATABASE splunge;
GO
USE splunge;
GO
CREATE USER peon FROM LOGIN peon;
GO
EXEC sp_addrolemember 'db_backupoperator', 'peon';
GO
EXECUTE AS USER = 'peon';
GO
BACKUP DATABASE splunge
  TO DISK = 'C:\tmp\splung.bak' -- change this path obviously
  WITH INIT, COMPRESSION;
GO
REVERT;
GO

因此,我将验证SQL Server服务帐户是否具有足够的权限来写入相关路径。我知道你说的是这种情况,但正如我所说,这似乎不是peon用户的问题,而是底层引擎写入文件系统的能力。如果在不向peon角色添加db_backupoperator的情况下尝试上述备份命令,则会出现此错误(它不会让您接近实际备份命令或验证磁盘上的任何权限):

Msg 262, Level 14, State 1, Line 1
BACKUP DATABASE permission denied in database 'splunge'.
Msg 3013, Level 16, State 1, Line 1
BACKUP DATABASE is terminating abnormally.

如果这是Windows登录,那么请确认用户确实对相关文件夹具有写入权限。尝试C:\Program Files\...下的层次结构以外的其他文件夹,不要尝试直接写入根目录(例如C:\file.bak)。

答案 2 :(得分:1)

我的猜测是这是Windows身份验证和集成安全性的问题。 SQL Server有时会模拟用户登录。尝试为您登录的Windows用户添加Windows ACL权限。

答案 3 :(得分:-2)

在sql服务器中管理。我先访问数据库属性,然后再授予权限,并向公众授予备份权限,我假设您也可以授予特定用户。那解决了我的问题。

相关问题