代码之家  ›  专栏  ›  技术社区  ›  Stefan Steinegger

sql server备份和移动备份文件:如何处理文件权限?

  •  0
  • Stefan Steinegger  · 技术社区  · 16 年前

    在我们的产品中,我们有一个简单的sql server数据库备份工具。这个工具应该 只是 对任何文件夹进行完整备份和还原。

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

    为了避免无法对网络驱动器执行备份的问题, 我将备份写入SQL Server备份目录中的临时文件。然后我把它移到目标文件夹。 这需要从SQL Server备份文件夹中删除临时文件的权限。恢复在另一个方向上是一样的。

    直到有人在vista上测试了它,在vista上 用户没有备份文件夹的写入权限 默认情况下。

    所以有很多解决办法,但似乎都不是很好。

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

    还有其他想法吗?谢谢。


    编辑: 解决方案必须适用于SQL Server 2005和2008、C 3.0(SMO)、Windows XP和Vista。

    2 回复  |  直到 16 年前
        1
  •  0
  •   Remus Rusanu    16 年前

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

    塞巴克特权 允许文件内容 检索,即使安全 文件上的描述符可能无法授予 这样的通道。打电话的人 启用sebackupprivilege可避免 需要任何基于acl的安全检查。

    虽然这听起来技术性很强而且很复杂,但实际上它可以归结为使用 ROBOCOPY /B

        2
  •  0
  •   Stefan Steinegger    16 年前

    好吧,我找到了解决办法。其实很简单,如果你比我更了解vista。

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

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

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

    推荐文章