我有一个 ssis 包部署到 ServerA 中的 ssis 目录。它被配置为通过 sql 代理作业步骤运行。
作业步骤设置为指向域用户凭据的以代理用户身份运行。示例:域名\user1
实际上,ssis 包正在上述用户的上下文中运行。
ssis 包访问位于 ServerB 上的共享驱动器上的文件,并将数据转储到 ServerC 上的 sql 表中。
ServerC 上的 sql 表是通过 ServerA 上配置的链接服务器使用相同的 windows 帐户访问的,并且模拟被选中。未配置委派。
由于我没有配置委托,所以通过链接服务器将数据转储到 sql 表时出错。我的问题是 - 为什么链接服务器需要 Windows 域用户的委派,而使用同一帐户访问共享网络文件不需要任何委派?
这是因为 ssis 不参与两跳 Windows 身份验证过程。正如您所说,您使用代理,因此您模拟了一个直接用于 CIFS 共享的帐户。
相反,使用链接服务器,您正在执行两跳 Windows 身份验证:
为避免 ssis 中出现两跳,请勿使用链接服务器。而是使用直接连接字符串。
这是设计使然(链接服务器的工作方式)。这是将记录的内容,我不会重复已经写过的内容。我会为你指出一些可信的文章。
现在您知道为什么会出现错误。您可以修复它或实施@MBuschi 的建议。