【问题标题】:Execute SSIS package on second server and write back to first server在第二台服务器上执行 SSIS 包并写回第一台服务器
【发布时间】:2019-06-07 19:45:23
【问题描述】:

我有两台 SQL 2016 服务器 - A 和 B。在服务器 A 上,我有一个 SQL 代理作业,其中包含执行驻留在服务器 B 上的 SSIS 包的步骤。服务器 B 上的包向服务器 B 上的表添加一行并尝试向服务器 A 上的表写入一行。

当服务器 A 上的代理作业运行时,程序包成功写入服务器 B 上的行(存储和执行 SSIS 包的位置),但在服务器 A 上写入行时出错(代理作业所在的位置)被运行)。

这是我从包中得到的错误消息:

SSISTest:错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E4D。 OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80040E4D 描述:“用户'NT AUTHORITY\ANONYMOUS LOGON'登录失败。”。

所以问题是当包试图将行从服务器 B 写入服务器 A 时。

如何更改服务器 B 上的 SSIS 包并提供凭据以写入服务器 A?或者,代理作业和包是否在同一个域登录下执行?

我已尝试将两台服务器的 SQL 服务帐户添加为每台服务器上的系统管理员。我还在服务器 A 上使用我的域登录名创建了一个凭据和代理帐户,该域登录名是两台服务器上的系统管理员。

【问题讨论】:

  • 包如何写入服务器 A 上的表?通过链接服务器?

标签: ssis


【解决方案1】:

这是典型的“双跳”身份验证不起作用或未配置。
你有几个选择:
1. 更简单:始终从本地 SQL 代理执行 SSIS 包。
2. 长期:配置 Kerberos 并启用双跳。

有一个关于如何配置Kerberos的文档:
Understanding Kerberos
Configure Kerberos for SQL Server 2017

【讨论】:

  • 谢谢 - 我相信我们已经全面设置了 Kerberos,但我会仔细检查一下,因为这听起来可能是答案。
  • 即使您有 Kerberos,也可能不会将 SPN 分配给 SQL Server。错误是 Kerberos 的典型错误。
  • 您能否解释一下您认为当前问题中的 hop 1 和 hop 2 是什么?
  • 第 1 跳是从代理 A 到 SSIS 服务器的连接,第 2 跳是从 SSIS 服务器到任何网络资源的连接,包括服务器 A 上的 db。
猜你喜欢
  • 2018-10-16
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多