0

我们将 2012 SSIS 包转换为 2016 SSIS(TargetServerVersion = SQL Server 2016)。

SSIS 包读取的数据库之一是 SQL Server 2012 数据库。

使用 Native OLE DB\SQL Server Native Client 11.0 连接或使用 SQL Server 的 OLE DB 提供程序连接都会产生相同的错误。

Data Source=my2012SQLDBServer;Initial Catalog=my2012SQLDB;Provider=SQLNCLI11.1;Integrated Security=SSPI;Auto Translate=False;

Data Source=my2012SQLDBServer;Initial Catalog=my2012SQLDB;Provider=SQLOLEDB.1;Integrated Security=SSPI;Application Name=myApplicationName-{....}my2012SQLDBServer.my2012SQLDB;Auto Translate=False;

从 SSMS 运行 SSIS 包时(使用对 2012 数据库具有 dbOwner 权限的用户运行 SSMS,即 myDomain\myUser),我在从 2012 数据库读取表的步骤中遇到错误

Execute SQL Task: Error: Failed to acquire connection "my2012SQLDBServer.my2012SQLDB". 
Connection may not be configured correctly or you may not have the right permissions on this connection.
DTS_E_OLEDBERROR. An OLE DB error has occurred. Error Code:0x80040E4D. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" HResult:0x80040E4D 
Description: "Login failed for user "NT AUTHORITY\ANONYMOUS LOGON".

在 Visual Studio(使用 myDomain\myUser 运行)上,我能够成功运行 SSIS 包。

myDomain\myUser 在 SSISDB 数据库中还具有 ssis_admin、ssis_logreader、db_owner、app_dbowner 角色。

我该如何解决这个错误?谢谢你。

4

1 回答 1

2

这是双跳问题的典型错误。
最简单的解决方案是使用远程桌面登录到 SSIS 服务器,然后在那里使用 SSMS 运行它。
其他选项是在 SSIS 服务器上定义 SQL 代理作业,然后使用此作业运行包。
最终的解决方案是配置 Kerberos 并允许在 SSIS 机器上进行双跳连接。

您可以查看以下帖子如何配置 Kerberos:
SSIS 作业在通过 ssms 远程运行时失败,但在 SQL Server 上运行良好

于 2020-04-29T14:33:59.590 回答