将 SSIS 包作为 SQL Server 代理作业运行的问题

gem*_*igo 5 ssis sql-server-agent jobs

在尝试在两个 SQL Server 上运行 SSIS 包 SQL Server 代理作业时,我遇到了一些非常顽固的困难,一个在域中,一个不在域中。我在几十个不同的论坛上阅读了数百个帖子,可惜无济于事。应用我发现的修复程序和解决方案(例如,使用代理)只会导致(略微)不同的错误消息。从 Visual Studio 或直接从 SQL Server Management Studio 运行包时,它们按预期执行。

这是我到目前为止所得到的:

机器A

  • 名为APP-TEST-SERVER
  • 不在域中
  • 运行 SQL Server 2016
  • SQL Server Agent 由NT Service\SQLSERVERAGENT运行,在 SQL Server 中是 sysadmin
  • Integration Services 由NT Service\MsDtsServer130运行(不在 SQL Server 中,也不能添加)
  • 有一个名为ssis_proxy的代理,它是运行 SQL Server 的机器中的本地登录名,并且是 SQL Server 中的系统管理员(当然,暂时看看它是否是导致权限/登录问题的代理)

运行其步骤作为SQL Server 代理服务帐户运行的作业时,我收到以下错误消息:

以用户身份执行:NT Service\SQLSERVERAGENT。适用于 32 位的 Microsoft (R) SQL Server 执行包实用程序版本 13.0.1601.5 版权所有 (C) 2016 Microsoft。版权所有。开始时间:下午 2:59:44 由于错误 0x80131904,无法执行 IS 服务器包。服务器:172.16.2.107,包路径:\SSISDB\test\test sp run\Package.dtsx,环境参考 ID:6。说明:用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。来源:.Net SqlClient 数据提供程序开始:下午 2:59:44 完成:下午 2:59:44 已用时间:0.171 秒。包执行失败。步骤失败。

什么是NT AUTHORITY\ANONYMOUS LOGON废话?它不应该使用 SQL Server 代理使用的 Windows 身份验证(即 NT Service\SQLSERVERAGENT)吗?怎么可能匿名?难道是因为在 SQL Server 中没有将 MsDtsServer130 添加为登录名导致了这个问题?在这种情况下我能做什么?无法将 MsDtsServer130 添加为 SQL Server 中的登录名。

当它以设置为代理ssis_proxy 的step run 运行时,我得到:

以用户身份执行:APP-TEST-SERVER\ssis_proxy。适用于 32 位的 Microsoft (R) SQL Server 执行包实用程序版本 13.0.1601.5 版权所有 (C) 2016 Microsoft。版权所有。开始时间:下午 3:23:15 由于错误 0x80131904,无法执行 IS 服务器包。服务器:172.16.2.107,包路径:\SSISDB\test\test sp run\Package.dtsx,环境参考 ID:6。说明:登录失败。登录名来自不受信任的域,不能与 Windows 身份验证一起使用。来源:.Net SqlClient 数据提供程序开始:下午 3:23:15 完成:下午 3:23:15 已用时间:0.172 秒。包执行失败。步骤失败。

为什么提到不受信任的域:

  • 对于可以在 SQL Server Management Studio 中使用 Windows 身份验证进行连接的登录?
  • 在不在域中的机器上?

机器B

  • 名为LINESRV03
  • 在域 LINEAR 中
  • 运行 SQL Server 2014
  • SQL Server 代理由NT AUTHORITY\NETWORKSERVICE运行并且是系统管理员
  • 集成服务也由NT AUTHORITY\NETWORKSERVICE运行
  • 有一个名为busztv的代理,它是 LINEAR 中的域用户,并且是 SQL Server 中的 sysadmin(当然,是临时查看是否是导致权限/登录问题的代理)

运行其步骤作为SQL Server 代理服务帐户运行的作业时,我收到以下错误消息:

以用户身份执行:LINEAR\LINESRV03$。Microsoft (R) SQL Server 执行包实用程序版本 12.0.5000.0,适用于 32 位 版权所有 (C) Microsoft Corporation。版权所有。开始时间:15:31:31 由于错误 0x80131904,无法执行 IS 服务器包。服务器:172.16.2.80,包路径:\SSISDB\test\test sp run\Package.dtsx,环境参考 ID:10。说明:登录失败。登录名来自不受信任的域,不能与 Windows 身份验证一起使用。来源:.Net SqlClient 数据提供程序 开始:15:31:31 完成:15:31:31 经过:0.328 秒。包执行失败。步骤失败。

再次这个不受信任的域。

我只是无法弄清楚这里谁是不信任的,Integration Services 或 SQL Server,但提供其他(非 ssis)作业运行并且代理自行运行它使我瘦 SQL Server 与NT AUTHORITY\NETWORKSERVICE及其根本无法克服它的集成服务。

当它以设置为代理busztv 的step run 运行时,我得到:

以用户身份执行:LINEAR\busztv。Microsoft (R) SQL Server 执行包实用程序版本 12.0.5000.0,适用于 32 位 版权所有 (C) Microsoft Corporation。版权所有。开始时间:15:33:25 由于错误 0x80131904,无法执行 IS 服务器包。服务器:172.16.2.80,包路径:\SSISDB\test\test sp run\Package.dtsx,环境参考 ID:10。说明:登录失败。登录名来自不受信任的域,不能与 Windows 身份验证一起使用。来源:.Net SqlClient 数据提供程序开始时间:15:33:25 结束时间:15:33:26 经过时间:0.312 秒。包执行失败。步骤失败。

它似乎有一些严重的信任问题,而且它不信任自己。这个不受信任的域令人讨厌,而且这个 #@!% 邪恶地避免告诉它正在谈论哪个登录名和哪个域。

编辑: 两台服务器上的包是相同的,都只尝试访问位于 Integration Services 机器上的 SQL Server 上的数据库(即。没有访问远程服务器,甚至没有通过链接服务器)和文件资源(删除和复制一个 SQLite 数据库文件,稍后通过 ODBC 访问)在同一台机器上。此外,代理获得了所需的所有必要权限(他们可以访问数据库和文件)。任务被从包中一一删除,看看它们是否是阻止作业运行的原因,直到那里没有任何东西。目前该任务不执行任何操作并且没有剩余的连接管理器。尽管如此,作业仍会失败并显示与以前相同的错误消息。

谁能解释一下如何杀死这条龙?

mar*_*ncy 0

您还有这个问题吗?我没有足够的代表来发表评论,但您是否尝试在服务器上的注册表中设置disableloopback = 1?“登录来自不受信任的域,无法与 Windows 身份验证一起使用”错误可能是由环回检查失败引起的。