排查 Microsoft Purview 自承载集成运行时 (SHIR)
本文探讨 Microsoft Purview 中自承载集成运行时 (SHIR) 的常见故障排除方法。
Azure 数据工厂 和 Azure Synapse Analytics 也使用自承载集成运行时 (SHIR) 。 尽管许多故障排除步骤重叠,但请按照本指南对这些产品的 SHIR 进行故障排除:
收集特定于 Microsoft Purview 的 SHIR 自承载集成运行时日志
对于在自承载 IR 上运行的失败的 Microsoft Purview 扫描,该服务支持从 Windows 事件查看器查看和上传错误日志。
可以查找以下错误指南中看到的任何错误。 若要获取 SHIR 问题的支持和故障排除指南,可能需要生成错误报告 ID 并 联系 Microsoft 支持人员。
若要为Microsoft 支持部门生成错误报告 ID,请按照以下说明操作:
在 Microsoft Purview 治理门户中开始扫描之前:
- 导航到安装了自承载集成运行时的计算机,并打开 Windows 事件查看器。
- 清除“Integration Runtime”部分中的 windows 事件查看器日志。 右键单击日志并选择“清除日志”选项。
- 导航回 Microsoft Purview 治理门户并开始扫描。
扫描显示“失败”状态后,请导航回到 SHIR VM 或计算机,并在“Integration Runtime”部分中刷新事件查看器。
将显示失败的扫描运行的活动日志。
如需 Microsoft 的进一步帮助,请选择“ 发送日志”。
此时会打开“ 使用 Microsoft 共享自承载集成运行时 (SHIR) 日志 ”窗口。
上传日志后,请记录报告 ID,以便与 Microsoft 支持部门联系时使用。
自承载集成运行时 SHIR 常规故障或错误
Purview SHIR、Azure 数据工厂或Azure Synapse SHIR 之间存在许多常见错误、警告和问题。 以下指南介绍了许多最常见的问题。
自承载 IR 常规故障或错误
内存不足问题
症状
尝试使用自承载 IR 运行扫描时,会出现 OutOfMemoryException (OOM) 错误。
原因
如果 IR 计算机遇到一时的内存使用率过高,则新扫描可能会引发 OOM 错误。 此问题可能是由大量并发活动或内存不足引起的,错误是设计造成的。
解决方案
检查资源使用情况以确认是否有其他软件同时运行,并确认 SHIR 计算机是否满足 建议的配置。
自承载 IR 无法加载文件或程序集
症状
收到以下错误消息:
“无法加载文件或程序集'XXXXXXXXXXXXX,Version=4.0.2.0,Culture=neutral,PublicKeyToken=XXXXXXXXXXXX'或其依赖项之一。 系统找不到指定的文件。 活动 ID:92693b45-b4bf-4fc8-89da-2d3dc56f27c3”
下面是更具体的错误消息:
“无法加载文件或程序集'System.ValueTuple,Version=4.0.2.0,Culture=neutral,PublicKeyToken=XXXXXXXXX'或其依赖项之一。 系统找不到指定的文件。 活动 ID:92693b45-b4bf-4fc8-89da-2d3dc56f27c3”
原因
在进程监视器中,可以查看以下结果:
提示
在进程监视器中,可以设置筛选器,如以下屏幕截图所示。 上述错误消息指出,DLL System.ValueTuple 未位于相关的全局程序集缓存 (GAC) 文件夹中、C:\Program Files\Microsoft Integration Runtime\4.0\Gateway 文件夹中或 C:\Program Files\Microsoft Integration Runtime\4.0\Shared 文件夹中。 基本上,该过程首先从 GAC 文件夹加载 DLL,然后从 共享文件夹 加载 DLL,最后从 网关 文件夹加载 DLL。 因此,可以从任何有用的路径加载 DLL。
解决方案
可以在 C:\Program Files\Microsoft Integration Runtime\4.0\Gateway\DataScan 文件夹中找到 System.ValueTuple.dll 文件。 若要解决此问题,请将 System.ValueTuple.dll 文件复制到 C:\Program Files\Microsoft Integration Runtime\4.0\Gateway 文件夹。
可以使用同一方法解决其他缺少的文件或程序集问题。
详细信息
在 %windir%\Microsoft.NET\assembly 和 %windir%\assembly 下看到 System.ValueTuple.dll 的原因是,这是一种 .NET 行为。
在以下错误中,可以清楚地看到 缺少 System.ValueTuple 程序集。 当应用程序尝试检查 System.ValueTuple.dll 程序集时,会出现此问题。
“<LogProperties><ErrorInfo>[{”Code“:0,”Message“:”'Npgsql.PoolManager'的类型初始值设定项引发了异常。“,”EventType“:0,”Category“:5,”Data“:{},”MsgId“:null,”ExceptionType“:”System.TypeInitializationException“,”Source“:”Npgsql“,”StackTrace“:”“,”InnerEventInfos“:[{”Code“:0,”Message“:”无法加载文件或程序集 'System.ValueTuple, Version=4.0.2.0, Culture=neutral、 PublicKeyToken=XXXXXXXXX'或其依赖项之一。 系统找不到指定的文件。“,”EventType“:0,”Category“:5,”Data“:{},”MsgId“:null,”ExceptionType“:”System.IO.FileNotFoundException“,”Source“:”Npgsql“,”StackTrace“:”“,”InnerEventInfos“:[]}]</ErrorInfo></LogProperties>”
有关 GAC 的详细信息,请参阅 全局程序集缓存。
缺少自承载集成运行时身份验证密钥
症状
在没有身份验证密钥的情况下,自承载集成运行时突然脱机,事件日志会显示以下错误消息:
“身份验证密钥尚未分配”
原因
Microsoft Purview 门户中的自承载 IR 节点或逻辑自承载 IR 已删除,或者执行了干净卸载。
解决方案
如果上述任一原因均不适用,可以转到 %programdata%\Microsoft\Data Transfer\DataManagementGateway 文件夹,查看 是否已删除配置文件 。 如果删除了该文件,请按照 Netwrix 文章 检测谁从 Windows 文件服务器中删除了文件中的说明进行操作。
无法选择证书,因为缺少私钥
症状
- 你已将 PFX 文件导入到证书存储区。
- 通过 IR Configuration Manager UI 选择证书时,收到以下错误消息:
“无法更改 Intranet 通信加密模式。 证书“证书名称>”<可能没有能够进行密钥交换的私钥,或者进程可能没有私钥的访问权限。 有关详细信息,请参阅内部异常。”
原因
- 用户帐户的权限级别较低,无法访问私钥。
- 证书是作为签名生成的,但不是作为密钥交换生成的。
解决方案
- 若要操作 UI,请使用具有访问私钥的适当权限的帐户。
- 通过运行以下命令导入证书:
certutil -importpfx FILENAME.pfx AT_KEYEXCHANGE
运行扫描时出现 UserErrorJreNotFound 错误消息
症状
尝试使用基于 Java 的工具或程序(例如 Parquet 格式化文件) ) (扫描数据源时,会收到类似于以下内容的错误消息:
ErrorCode=UserErrorJreNotFound,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Java 运行时环境未找到。 转到
http://go.microsoft.com/fwlink/?LinkId=808605
下载并安装在 Integration Runtime(自承载) 节点计算机上。 注意 64 位Integration Runtime需要 64 位 JRE,32 位Integration Runtime需要 32 位 JRE.,Source=Microsoft.DataTransfer.Common,'Type=System.DllNotFoundException,Message=无法加载 DLL'jvm.dll':找不到指定的模块。 (来自 HRESULT 的异常:0x8007007E) ,Source=Microsoft.DataTransfer.Richfile.HiveOrcBridge
原因
出现此问题的原因有以下任一:
Integration Runtime 服务器上未正确安装 Java 运行时环境 (JRE) 。
Integration Runtime服务器缺少 JRE 所需的依赖项。
默认情况下,Integration Runtime使用注册表项解析 JRE 路径。 应在 JRE 安装过程中自动设置这些条目。
解决方案
请仔细遵循本部分中的步骤进行操作。 对注册表修改不当可能会导致严重问题。 修改之前,备份注册表以便在发生问题时进行还原。
若要解决此问题,请按照以下步骤验证 JRE 安装的状态:
请确保在同一平台上安装了 Integration Runtime (Diahost.exe) 和 JRE。 检查以下条件:
64 位 ADF Integration Runtime的 64 位 JRE 应安装在 文件夹中:
C:\Program Files\Java\
注意
文件夹不是
C:\Program Files (x86)\Java\
JRE 11 兼容扫描。 JRE 8 也是兼容的,但尚未验证早于 JRE 8 的版本是否适合此用途。
检查注册表中的相应设置。 为此,请按照下列步骤操作:
在 “运行 ”菜单中,键入 “Regedit”,然后按 Enter。
在导航窗格中,找到以下子项:
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment
.在“ 详细信息 ”窗格中,应有一个显示 JRE 版本 (例如 1.8) 的当前版本条目。
在导航窗格中,找到与版本 (完全匹配的子项,例如 JRE 文件夹下的 1.8) 。 在详细信息窗格中,应有 一个 JavaHome 条目。 此项的值是 JRE 安装路径。
在以下路径中找到 bin\server 文件夹:
C:\Program Files\Java\jre1.xx.xxx
检查此文件夹是否包含 jvm.dll 文件。 否则,检查 文件夹中的文件
bin\client
。
注意
- 如果这些配置中的任何一个未如这些步骤中所述,请使用 JRE Windows 安装程序 来修复问题。
- 如果这些步骤中的所有配置都如所述正确,则系统中可能缺少 VC++ 运行时库。 可以通过安装 VC++ 2010 可再发行程序包来解决此问题。
自承载 IR 设置
集成运行时注册错误
症状
出于以下任一原因,有时可能需要在不同的帐户中运行自承载 IR:
- 公司策略禁止使用服务帐户。
- 需要一些身份验证。
在服务窗格中更改服务帐户后,可能会发现集成运行时停止工作,并收到以下错误消息:
“Integration Runtime(自承载)节点在注册过程中遇到错误。 无法连接到Integration Runtime(自承载)主机服务。”
原因
许多资源仅授予服务帐户。 将服务帐户更改为另一个帐户时,所有依赖资源的权限保持不变。
解决方案
转到集成运行时事件日志以检查错误。
如果事件日志中的错误为“UnauthorizedAccessException”,请执行以下操作:
检查 Windows 服务面板中的 DIAHostService 登录服务帐户。
检查登录服务帐户是否具有 对 %programdata%\Microsoft\DataTransfer\DataManagementGateway 文件夹的读/写权限。
默认情况下,如果服务登录帐户尚未更改,则应具有读/写权限。
如果已更改服务登录帐户,请执行下列操作来缓解问题:
- 对当前自承载 IR 执行干净卸载。
- 安装自承载 IR 位。
- 通过执行以下操作更改服务帐户:
- 转到自承载 IR 安装文件夹,然后切换到 Microsoft Integration Runtime\4.0\Shared 文件夹。
- 使用提升的权限打开命令提示符窗口。 将用户>和密码替换为<自己的用户名和密码,然后运行以下命令:><
dmgcmd.exe -SwitchServiceAccount "<user>" "<password>"
- 如果要更改为 LocalSystem 帐户,请确保为此帐户使用正确的格式:
dmgcmd.exe -SwitchServiceAccount "NT Authority\System" ""
-
请勿使用以下格式:
dmgcmd.exe -SwitchServiceAccount "LocalSystem" ""
- (可选)由于本地系统的权限高于管理员,因此还可以直接在“服务”中更改它。
- 可以将本地/域用户用于 IR 服务登录帐户。
- 注册集成运行时。
如果错误为“服务'Integration Runtime服务' (DIAHostService) 无法启动。 验证是否有足够的权限来启动系统服务,“请执行以下操作:
检查 Windows 服务面板中的 DIAHostService 登录服务帐户。
检查登录服务帐户是否具有“ 以服务身份登录” 权限来启动 Windows 服务:
详细信息
如果上述两种解决模式都不适用于你的案例,请尝试收集以下 Windows 事件日志:
- 应用程序和服务日志>Integration Runtime
- Windows 日志 > 应用程序
找不到用于注册自承载 IR 的“注册”按钮
症状
注册自承载 IR 时,“注册”按钮不会显示在“Configuration Manager”窗格中。
原因
自 Integration Runtime 3.0 发布以来,已删除现有集成运行时节点上的“注册”按钮,以实现更简洁、更安全的环境。 如果某个节点已注册到集成运行时,无论它是否处于联机状态,请通过卸载上一个节点将其重新注册到另一个集成运行时,然后安装并注册该节点。
解决方案
在 控制面板 中,卸载现有集成运行时。
重要
在以下过程中,选择“ 是”。 在卸载过程中不要保留数据。
如果没有集成运行时安装程序 MSI 文件,请转到 下载中心 下载最新的集成运行时。
安装 MSI 文件,并注册集成运行时。
由于 localhost,无法注册自承载 IR
症状
使用 get_LoopbackIpOrName 时,无法在新计算机上注册自承载 IR。
调试: 发生运行时错误。 “Microsoft.DataTransfer.DIAgentHost.DataSourceCache”的类型初始值设定项引发了异常。 在数据库查找过程中发生不可恢复的错误。
异常详细信息: System.TypeInitializationException:“Microsoft.DataTransfer.DIAgentHost.DataSourceCache”的类型初始值设定项引发异常。 >--- System.Net.Sockets.SocketException:在 System.Net.Dns.GetAddrInfo 的数据库查找过程中发生不可恢复的错误, (字符串名称) 。
原因
在解决 localhost 时,通常会出现此问题。
重新solition
使用 localhost IP 地址 127.0.0.1 托管文件并解决问题。
自承载安装失败
症状
无法卸载现有 IR、安装新的 IR 或将现有 IR 升级到新的 IR。
原因
集成运行时安装取决于 Windows Installer 服务。 你可能会遇到安装问题,原因如下:
- 可用磁盘空间不足。
- 缺少权限。
- Windows NT 服务已锁定。
- CPU 使用率过高。
- MSI 文件托管在慢速网络位置。
- 某些系统文件或注册表无意中被触摸。
IR 服务帐户无法获取证书访问权限
症状
通过 Microsoft Integration Runtime Configuration Manager 安装自承载 IR 时,将生成具有受信任证书颁发机构的证书 (CA) 。 无法应用证书来加密两个节点之间的通信,并显示以下错误消息:
“无法更改 Intranet 通信加密模式:无法向Integration Runtime服务帐户授予对证书”证书名称>“<的访问权限。 错误代码 103”
原因
证书使用密钥存储提供程序 (KSP) 存储,尚不受支持。 迄今为止,自承载 IR 仅支持加密服务提供商 (CSP) 存储。
解决方案
在这种情况下,建议使用 CSP 证书。
解决方案 1
若要导入证书,请运行以下命令:
Certutil.exe -CSP "CSP or KSP" -ImportPFX FILENAME.pfx
解决方案 2
若要转换证书,请运行以下命令:
openssl pkcs12 -in .\xxxx.pfx -out .\xxxx_new.pem -password pass: <EnterPassword>
openssl pkcs12 -export -in .\xxxx_new.pem -out xxxx_new.pfx
转换前后:
自承载集成运行时版本 5.x
若要升级到自承载集成运行时版本 5.x,需要.NET Framework Runtime 4.7.2 或更高版本。 在下载页上,可以找到最新 4.x 版本和最新两个 5.x 版本的下载链接。
对于 Azure 数据工厂 v2 和 Azure Synapse 客户:
- 如果已启用自动更新,并且已将.NET Framework运行时升级到 4.7.2 或更高版本,则自承载集成运行时将自动升级到最新的 5.x 版本。
- 如果自动更新已启用,但尚未将.NET Framework运行时升级到 4.7.2 或更高版本,则自承载集成运行时不会自动升级到最新的 5.x 版本。 自承载集成运行时将保留在当前 4.x 版本中。 在门户中和自承载集成运行时客户端中,可以看到.NET Framework运行时升级的警告。
- 如果自动更新处于关闭状态,并且已将.NET Framework运行时升级到 4.7.2 或更高版本,则可以手动下载最新的 5.x 并将其安装在计算机上。
- 如果自动更新已关闭,并且尚未将.NET Framework Runtime 升级到 4.7.2 或更高版本。 尝试手动安装自承载集成运行时 5.x 并注册密钥时,需要先升级 .NET Framework Runtime 版本。
对于 Azure 数据工厂 v1 客户:
- 自承载集成运行时 5.X 不支持 Azure 数据工厂 v1。
- 自承载集成运行时将自动升级到最新版本的 4.x。 4.x 的最新版本不会过期。
- 如果尝试手动安装自承载集成运行时 5.x 并注册密钥,系统会通知自承载集成运行时 5.x 不支持 Azure 数据工厂 v1。
自承载 IR 连接问题
自承载集成运行时无法连接到云服务
症状
尝试注册自承载集成运行时时,Configuration Manager显示以下错误消息:
“Integration Runtime(自承载)节点在注册过程中遇到错误。”
原因
自承载 IR 无法连接到服务后端。 此问题通常是由防火墙中的网络设置引起的。
解决方案
检查集成运行时服务是否正在运行。 如果是,请转到步骤 2。
如果未在自承载 IR(默认设置)上配置代理,请在安装了自承载集成运行时的计算机上运行以下 PowerShell 命令:
(New-Object System.Net.WebClient).DownloadString("https://wu2.frontend.clouddatahub.net/")
注意
服务 URL 可能会有所不同,具体取决于数据工厂或 Synapse 工作区实例的位置。 若要查找服务 URL,请使用数据工厂或Azure Synapse实例中 UI 的“管理”页查找集成运行时,并单击自承载 IR 进行编辑。 选择“ 节点 ”选项卡,然后单击“ 查看服务 URL”。
下面是预期的响应:
如果未收到预期的响应,请根据需要使用以下方法之一:
- 如果收到“无法解析远程名称”消息,则表示存在域名系统 (DNS) 问题。 请与网络团队联系以解决此问题。
- 如果收到“ssl/tls 证书不受信任”消息,检查证书 (
https://wu2.frontend.clouddatahub.net/
) ,以查看该证书在计算机上是否受信任,然后使用证书管理器安装公共证书。 此操作应可缓解此问题。 - 转到 Windows>事件查看器 () 应用程序和服务日志>的日志>Integration Runtime,并检查 DNS、防火墙规则或公司网络设置导致的任何故障。 如果发现此类故障,请强行关闭连接。 由于每个公司都有自己的自定义网络设置,因此请与网络团队联系以解决这些问题。
如果在自承载集成运行时上配置了“proxy”,请验证代理服务器是否可以访问服务终结点。 有关示例命令,请参阅 PowerShell、Web 请求和代理。
$user = $env:username $webproxy = (get-itemproperty 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings').ProxyServer $pwd = Read-Host "Password?" -assecurestring $proxy = new-object System.Net.WebProxy $proxy.Address = $webproxy $account = new-object System.Net.NetworkCredential($user, [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($pwd)), "") $proxy.credentials = $account $url = "https://wu2.frontend.clouddatahub.net/" $wc = new-object system.net.WebClient $wc.proxy = $proxy $webpage = $wc.DownloadData($url) $string = [System.Text.Encoding]::ASCII.GetString($webpage) $string
下面是预期的响应:
注意
代理注意事项:
- 检查是否需要将代理服务器放在“安全收件人”列表中。 如果是这样,请确保 这些域 位于“安全收件人”列表中。
- 检查是否在代理服务器上信任 SSL/TLS 证书“wu2.frontend.clouddatahub.net/”。
- 如果在代理上使用 Active Directory 身份验证,请将服务帐户更改为可访问代理的用户帐户,将其更改为“Integration Runtime服务”。
无法为 SSL/TLS 安全通道建立信任关系
症状
自承载 IR 无法连接到 Microsoft Purview。
转到 Windows>事件查看器 > (日志) 应用程序和服务日志后检查自承载 IR 事件日志>时Integration Runtime你会发现以下错误消息:
“基础连接已关闭:无法为 SSL/TLS 安全通道建立信任关系。 根据验证过程,远程证书无效。”
检查服务服务器证书的最简单方法是在浏览器中打开服务 URL。 例如,在安装了自承载 IR 的计算机上打开检查服务器证书链接 ((https://eu.frontend.clouddatahub.net/
) ,然后查看服务器证书信息。
原因
此问题有两个可能的原因:
- 原因 1:服务服务器证书的根 CA 在安装自承载 IR 的计算机上不受信任。
- 原因 2:你在环境中使用代理,服务的服务器证书将替换为代理,并且替换的服务器证书不受安装自承载 IR 的计算机的信任。
解决方案
- 原因 1:确保安装自承载 IR 的计算机信任服务的服务器证书及其证书链。
- 原因 2:信任自承载 IR 计算机上已替换的根 CA,或将代理配置为不替换服务的服务器证书。
有关在 Windows 上信任证书的详细信息,请参阅 安装受信任的根证书。
详细信息
我们推出了新的 SSL 证书,该证书从 DigiCert 签名。 检查 DigiCert 全局根 G2 是否位于受信任的根 CA 中。
如果它不在受信任的根 CA 中, 请在此处下载。
后续步骤
有关故障排除的更多帮助,请尝试以下资源: