我有一个想要作为工作运行的 SSIS 包。平面文件源位于服务器 A 上,而包和作业位于服务器 B 上。
当我运行执行 SSIS 包的作业时,出现错误(错误代码 0xC020200E 无法打开数据文件),但我可以在 SSMS 中手动执行已部署的包并成功执行。我发现这是由于服务器 B 的 NT SERVICE\MSSQLSERVER 服务帐户无法访问服务器 A 上的文件夹造成的。为了对此进行测试,我在服务器 B 上创建了一个测试文件夹并让 SSIS 包看起来在那里,我有然后给予 NT SERVICE\MSSQLSERVER 对服务器 B 上文件夹的完全访问权限。作业成功执行并且包运行但是当我尝试为服务器 A 上的文件夹授予 NT SERVICE\MSSQLSERVER 权限时,我在这些位置找不到服务器选项卡,我无法访问 NT SERVICE\MSSQLSERVER 服务帐户。我曾尝试映射网络驱动器,但没有帮助。
NT SERVICE\MSSQLSERVER 是本地服务帐户 - 因此它无权访问网络资源(如文件共享) 使用 SQL Server 配置管理器更改为网络服务帐户或域帐户
此处描述了不同的服务帐户类型:- https://learn.microsoft.com/en-us/sql/database-engine/configure-windows/configure-windows-service-accounts-and-permissions?view=sql-服务器-ver15
接受的答案是错误的。'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>$ 的计算机帐户的凭据来访问网络资源。