用户“NT AUTHORITY\ANONYMOUS LOGON”登录 SSIS 失败

Gih*_*nDB 5 sql-server etl ssis sql-server-agent

我有一个 SSIS 包,它在 MySQL 数据库和 SQL Server 数据库之间执行数据迁移。当我从 Visual Studio 或 SQL Server Management Studio 手动运行它时,它运行成功。但是当我使用 SQL Server 代理作业安排它时,会发生错误。

描述:用户“NT AUTHORITY\ANONYMOUS LOGON”登录失败。来源:.Net SqlClient 数据提供程序

这是什么错误?为什么只有在预定时才会发生这种情况?如何克服这个问题呢?

Tho*_*ter 2

您可能正在处理 DimUser 建议的委托/模拟问题。

如果您的 SSIS 只是从一台数据库服务器获取数据并将其传递到另一台数据库服务器,那么解决方案会容易得多,应该是设置 SQL Server Agent 代理。

如果您从 Visual Studio 或 SSMS 手动执行 SSIS 包,该包将尝试使用您的 Windows 凭据登录 SQL Server。如果您的帐户具有正确的权限,则会成功。

如果您设置 SQL Server 代理作业来执行该包,则运行 SQL Server 代理的服务帐户将执行该包。他没有您的 Windows 凭据,因此他将尝试使用匿名登录,从而导致此错误消息。

要使 SQL Server 代理能够使用不同的帐户执行包,您必须执行以下三个步骤:

  1. 创建凭证
  2. 设置代理帐户
  3. 配置 SQL Server 代理步骤以使用代理帐户

创建凭据 连接到应执行您的包的 SQL Server。右键单击“安全性”并选择“新凭据...”。输入描述性名称(凭据名称),选择您要使用的 Windows 帐户(身份)并输入密码。单击“确定”。

对于初始测试,您可以使用自己的 Windows 帐户。对于生产使用,我建议创建一个专用的 AD 服务帐户(具有最小权限)。

设置代理帐户 展开 SQL Server 代理文件夹。打开代理并右键单击“SSIS 包执行”,选择“新代理...”。输入描述性代理名称并使用您之前创建的凭据。

配置 SQL Server 代理步骤以使用代理帐户 打开代理作业,选择执行 SSIS 包的步骤的属性。现在,您可以在“运行方式:”下拉列表中选择您的代理帐户。

附加设置: 如果您的包部署到 SSIS 目录,您还需要向用于凭据的 Windows 登录授予 SSISDB 上的“SSIS_Admin”角色。

为此,您需要在 SQL Server(公共)中创建帐户作为常规 Windows 登录名,并使用 SSIS_Admin 角色将用户映射到 SSISDB。