Sql Server备份和移动备份文件:如何处理文件权限?

时间:2010-03-17 16:10:56

标签: sql-server sql-server-2005 backup windows-vista file-permissions

通过我们的产品,我们为sql server数据库提供了一个简单的备份工具。此工具只需进行完整备份并从任何文件夹恢复。

当然,用户(通常是管理员)需要获得写入目标文件夹的权限。

为避免无法执行网络驱动器备份的问题,我将备份写入Sql Server备份目录中的临时文件。然后我将其移动到目标文件夹。这需要从sql servers备份文件夹中删除临时文件的权限。另一方面恢复是一样的。

这似乎工作正常,直到有人在vista上测试它,默认情况下用户没有对备份文件夹的写入权限

所以有很多解决方案可以解决这个问题,但它们似乎都不是很好。

一种解决方案是为临时文件找到另一个文件夹。 sql server用户以及执行备份的管理员都需要读写权限。有这样的目录吗?

还有其他想法吗?非常感谢。


编辑:解决方案必须适用于Sql Server 2005和2008,C#3.0(Smo),Windows XP和Vista。

2 个答案:

答案 0 :(得分:0)

执行备份操作的应用程序可以请求以备份模式打开文件。这意味着应用程序具有SeBackupPrivilege权限,并且它打开了设置了FILE_FLAG_BACKUP_SEMANTICS标志的文件:

  

SeBackupPrivilege - 允许文件内容   检索,即使安全   文件上的描述符可能不会授予   这种访问。一个来电者   启用S​​eBackupPrivilege可以避免使用   需要任何基于ACL的安全检查。

虽然这听起来技术性和复杂性,但实际上归结为使用ROBOCOPY /B复制文件

答案 1 :(得分:0)

好的,我找到了解决方案。如果你比我更了解Vista,那实际上非常简单。

备份文件夹的配置方式与XP相同,但在进程处于提升模式之前,管理员权限不可用。为此,我只需要向需要管理员权限的可执行文件添加清单:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

现在我在调用应用程序时得到一个UAC,一切正常。