【问题标题】:Unable to open the file .mdf/.ldf. Operating system error 5: 5"(Access is denied.)" - Trying to replace .mdf/.ldf file with new one无法打开文件 .mdf/.ldf。操作系统错误 5:5“(拒绝访问。)” - 尝试用新文件替换 .mdf/.ldf 文件
【发布时间】:2021-04-16 20:47:00
【问题描述】:

我可以从默认的\DATA 文件夹位置随意移动.mdf/.ldf 文件。每当我手动移动这些文件时,我都可以将数据库设置为联机和脱机。

我们每个月都会获得一组新的.mdf/.ldf 文件来替换我们现有的文件。我正在尝试使用 SSIS 自动化此过程。我已经设法创建了一个包来处理用新文件替换旧的 .mdf/.ldf 文件。

但是!

使用新的.mdf/.ldf 文件打开数据库的 SQL 任务未运行。

我收到此错误:

错误:0xC002F210 在 Take Sandbox Online,执行 SQL 任务:执行查询“ALTER DATABASE Sandbox SET ONLINE”失败,出现以下错误:“无法打开物理文件”C:\Program Files\Microsoft SQL Server\MSSQL13 .SERVER\MSSQL\DATA\SANDBOX.mdf”。操作系统错误5:“5(拒绝访问。)”。

无法打开物理文件“C:\Program Files\Microsoft SQL Server\MSSQL13.SERVER\MSSQL\DATA\SANDBOX_LOG.ldf”。操作系统错误 5:“5(拒绝访问。)”。

我可以手动执行此过程,但由于某种原因,SSIS 无法使用 SQL 任务重新打开数据库。我显然有权执行此任务,但我不知道通过 SSIS 运行会有什么问题。

请帮忙!

谢谢

【问题讨论】:

    标签: sql-server tsql ssis file-permissions


    【解决方案1】:

    SQL Server 使用服务帐户,通常称为NT SERVICE\MSSQLSERVER,需要对 mdf/ldf 文件具有权限。

    右键文件,点击属性/安全/编辑/添加,将账号添加权限。

    【讨论】:

    • 您能帮我了解这些工具如何导航要使用的帐户吗?我使用本地帐户运行 SSIS 包,为什么需要“NT 服务”帐户?
    • 为了使数据库联机,SSIS 调用 SQL Server 并要求它这样做。 SSIS 不会打开数据库文件,SQL Server 会打开,它需要正确的帐户权限。 SQL Server 作为 Windows 服务运行。
    • 感谢您的指导,这很有趣。我使用的帐户也有在 SQL Server 上运行的凭据,是否可以指示 SQL Server 使用我为此实例选择的其他帐户?
    • 你不能只为一个操作改变它,否则下次数据库将不会重新上线。为了安全起见,最好不要永久更改。服务帐户的存在是有原因的,它有一个长且不变的密码,以及有限的权限。你可以做的是给你放置这些数据库的整个文件夹的可继承权限,然后它会自动获得这些文件的权限
    • 感谢您的回答!这对帮助我讨论如何与我们的 IT 部门进行配置非常有用。您的解决方案确实解决了问题,但我也需要您提供的上下文。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2014-05-07
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多