SSIS 错误“打开“<view>”的行集失败。在新虚拟机中运行时检查数据库中是否存在该对象

问题描述 投票:0回答:1

我有一个 SSIS 作业,它将数据从 SQL 视图导出到平面文件。该视图位于 Server1 上,并具有到 Server2 上的表的 JOIN。 ssis 包正在 Visual Studio 2022 中运行。我可以使用它并从我当前的 VM 运行它,没有问题。它被部署到 SQL Server 并从那里运行没有问题。我正在购买一个新的虚拟机并进行测试以确保一切设置正确。在新的 VM 中,我在连接到具有 Server2 联接的视图的任何数据流任务上都会出错。如果我注释掉对 Server2 的连接,错误就会消失。

HRESULT 异常:0xC02020E8 注释错误 [OLE DB 源 1 [113]]:SSIS 错误代码 DTS_E_OLEDBERROR。 OLE DB 错误有 发生。错误代码:0x80004005。

注释中的错误 [OLE DB Source 1 [113]]:为“view”打开行集 失败的。检查数据库中是否存在该对象。

我花了几个小时对各种问题进行故障排除,在此期间我在当前虚拟机和新虚拟机中打开它之间切换。它始终在当前虚拟机中运行。它似乎在新的虚拟机中工作过一次,并且我能够创建一个文件。我关闭并重新打开了该作业,但此后它在新虚拟机中就不再工作了。想知道两个安装之间是否存在一些可能不同的 VS 配置,从而导致此问题。在这两种情况下,延迟验证均设置为 False。新的虚拟机安装了 Windows 11,我相信当前是 10,因此认为这可能与 Windows 11 有关。

visual-studio ssis sql-server-2019
1个回答
0
投票

进行了更多故障排除,最终得到了与 NT AUTHORITY\ANONYMOUS LOGON 连接失败相关的不同错误。

该问题与 Kerberos 委派和 Credential Guard 有关。在我们的环境中,链接服务器配置为 SQL Server 服务帐户能够将 Kerberos 凭据委托给 SQL Server。它被配置为允许完全委派。 Credential Guard 是 Windows 中的一项功能,默认情况下为 Windows 11 Enterprise 启用。它不允许完全授权。

将 SQL Server 服务帐户翻转为对 SPN 使用约束委派后,它开始在启用 Credential Guard 的情况下工作。这是使用 Powershell 完成的。 SQL Server 的示例命令是

‘Set-ADUser -Identity "<ServiceAccount>" -Add @{'msDS-AllowedToDelegateTo'='MSSQLSvc/Castor.healthshareoregon.org:1433'}’

© www.soinside.com 2019 - 2024. All rights reserved.