无法授予网络驱动器上的 NT SERVICE\MSSQLSERVER 权限

Cod*_*cis 4 sql-server permissions ssis network jobs

我有一个 SSIS 包,我想将其作为作业运行。平面文件源位于服务器 A 上,而包和作业位于服务器 B 上。

当我运行执行 SSIS 包的作业时,出现错误:

错误代码 0xC020200E 无法打开数据文件

但我可以在 SSMS 中手动执行部署的包,并且它执行成功。我发现这是由于服务器 B 的 NT SERVICE\MSSQLSERVER 服务帐户无权访问服务器 A 上的文件夹造成的。

为了测试这一点,我在服务器 B 上创建了一个测试文件夹,并让 SSIS 包在其中查找。然后,我授予 NT SERVICE\MSSQLSERVER 对服务器 B 上的文件夹的完全访问权限。作业执行成功并且包运行,但是当我尝试向服务器 A 上的文件夹授予 NT SERVICE\MSSQLSERVER 权限时,我在位置选项卡,我无法访问 NT SERVICE\MSSQLSERVER 服务帐户。

我尝试过映射网络驱动器,但这没有帮助。文件每天早上自动上传到服务器 A,文件夹必须保留在服务器 B 上。

小智 5

接受的答案是错误的。“NT SERVICE\MSSQLSERVER”不是本地服务帐户,它是虚拟帐户。虚拟帐户在安装它们的计算机的上下文中运行任务。因此,如果您想通过网络共享访问 SQL Server 服务,则必须授予对运行 SQL Server 的计算机的访问权限。假设您的计算机名称是 SQLSERVER,您必须向 DOMAIN\SQLSERVER$ 帐户授予对共享的访问权限,以便您的 SQL 服务可以访问它。

来自微软学习

虚拟帐户(从 Windows Server 2008 R2 和 Windows 7 开始)是托管本地帐户,提供以下功能以简化服务管理。虚拟账号是自动管理的,虚拟账号可以在域环境下访问网络。如果在 SQL Server 安装期间对服务帐户使用默认值,则会使用以实例名称作为服务名称的虚拟帐户,格式为 NT SERVICE<SERVICENAME>。作为虚拟帐户运行的服务通过使用以下格式的计算机帐户的凭据来访问网络资源<domain_name>\<computer_name>$

(粗体强调我的)

  • 还值得注意的是,要将计算机帐户添加到文件夹权限,您可能需要进入高级权限设置并启用搜索计算机实体,因为默认值只是用户和组。 (2认同)