本文介绍了使用本地数据网关时可能会遇到的一些常见问题。

注意:如果遇到下面未列出的问题,你可以在下列位置中寻求进一步的帮助。

  • 对于 Power BI,你可以使用社区网站,或者创建支持票证
  • 对于 PowerApps,你可以使用社区网站,或者创建支持票证
  • 对于 Microsoft Flow,你可以使用社区网站,或者创建支持票证
  • 对于 Logic Apps,你可以通过 Azure 门户提交支持票证。

更新到最新版本

网关版本过期后,可能会遇到很多问题。 好的常规做法是确保所使用的是最新版本。 如果你已经一个月或更长时间没有升级网关,可能需要考虑安装网关最新版本,并检查此问题是否会重现。

常见问题

以下是一些常见的问题及解决方案,这些解决方案已帮助了许多处于 Internet 访问受限环境的客户。

对代理服务器的身份验证

代理可能需要对域用户帐户进行身份验证。 默认情况下,网关使用 Windows 服务登录用户的服务 SID。 将登录用户更改为域用户可有助于完成此操作。 有关详细信息,请参阅将网关服务帐户更改为域用户

你的代理服务器仅支持端口 80 和 443 通信

部分代理服务器将通信限制为仅端口 80 和 443。 默认情况下,与 Azure 服务总线的通信将发生在除 443 之外的端口上。

可以使用 HTTPS 替代直接 TCP,以强制网关与 Azure 服务总线通信。 需要修改 Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config 文件。 将值从 AutoDetect 更改为 Https。 默认情况下,此文件位于 C:\Program Files\On-premises data gateway

<setting name="ServiceBusSystemConnectivityModeString" serializeAs="String">
    <value>Https</value>
</setting>

安装

错误:无法将用户添加到组。 (-2147463168 PBIEgwService Performance Log Users )

如果尝试在域控制器上安装网关,你可能会收到此错误。 不支持在域控制器上部署。 你需要在不是域控制器的计算机上部署网关。

配置

如何重启网关

因为网关作为 Windows 服务运行,因此可使用多种方式进行其启动和停止。 例如,可以在网关正在运行的计算机上使用提升权限打开命令提示符,然后运行以下命令之一:

  • 若要停止服务,则运行该命令:

    ''' net stop PBIEgwService '''

  • 若要启动服务,则运行该命令:

    ''' net start PBIEgwService '''

错误:无法创建网关。 请重试。

所有详细信息均可用,但对 Power BI 服务的调用返回了一个错误。 将显示错误和一个活动 ID。 这可能是不同的原因导致的。 你可以收集并查看以下所述的日志,获取更多详细信息。

这也可能是由于代理配置问题导致的。 用户界面现在允许代理配置。 你可以了解有关进行代理服务器配置更改的详细信息

错误:未能更新网关详细信息。 请重试。

从 Power BI 服务到网关收到了信息。 信息已传递到本地 Windows 服务,但它无法返回值。 或者,对称密钥生成失败。 内部异常将显示在显示详细信息下。 你可以收集并查看以下所述的日志,获取更多详细信息。

错误:Power BI 服务报告本地网关无法访问。 请重启网关,然后重试。

配置结束时,将再次调用 Power BI 服务以验证网关。 Power BI 服务没有将网关报告为动态。 重启 Windows 服务可能会使通信成功。 你可以收集并查看以下所述的日志,获取更多详细信息。

登录 Power BI 时出现的脚本错误

在执行本地数据网关配置期间登录 Power BI 可能会看到脚本错误。 安装以下安全更新应可解决该问题。 这可以通过 Windows 更新进行安装。

MS16-051:Internet Explorer 的安全更新:2016 年 5 月 10 日 (KB 3154070)

网关配置失败,出现 null 引用异常

你可能会遇到以下类似错误。

    Failed to update gateway details.  Please try again.
    Error updating gateway configuration.

这将包括堆栈跟踪,并且该堆栈跟踪可能包括以下内容。

    Microsoft.PowerBI.DataMovement.Pipeline.Diagnostics.CouldNotUpdateGatewayConfigurationException: Error updating gateway configuration. ----> System.ArgumentNullException: Value cannot be null.
    Parameter name: serviceSection

如果你正从旧网关中升级,我们会保存配置文件。 可能存在缺失的部分。 当网关尝试读取它时,我们将获取上述 null 引用异常。

要纠正这一错误,请执行以下操作。

  1. 卸载网关。

  2. 删除以下文件夹。

    c:\Program Files\on-premises data gateway
    
  3. 重新安装网关。

  4. 酌情应用恢复密钥以还原现有网关。

对 TLS 1.1/1.2 的支持

自 2017 年 8 月更新起,本地数据网关默认使用传输层安全 (TLS) 1.1 或 1.2 与 Power BI 服务进行通信。 以前版本的本地数据网关默认使用 TLS 1.0。 对 TLS 1.0 的支持将于 2017 年 11 月 1 日结束,因此,在此之前必须将本地数据网关安装升级到 2017 年 8 月版本或更新版本,以确保网关继续运行。

值得注意的是,TLS 1.0 在 11 月 1 日之前仍受本地数据网关支持,并由网关用作回退机制。 要确保所有网关流量使用 TLS 1.1 或 1.2(并防止在网关上使用 TLS 1.0),必须在运行网关服务的计算机上添加或修改以下注册表项:

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319]"SchUseStrongCrypto"=dword:00000001
    [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319]"SchUseStrongCrypto"=dword:00000001

注意:添加或修改这些注册表项会将更改应用于所有 .NET 应用程序。 有关影响其他应用程序的 TLS 的注册表更改的信息,请参阅传输层安全性 (TLS) 注册表设置

数据源

错误:无法连接。 详细信息:“无效的连接凭据”

显示详细信息中,应显示从数据源收到的错误消息。 对于 SQL Server,你应看到如下所示的内容。

Login failed for user 'username'.

验证你具有正确的用户名和密码。 还会验证这些凭据是否可以成功地连接到数据源。 请确保所使用的帐户与身份验证方法匹配。

错误:无法连接。 详细信息:“无法连接到数据库”

我们可以连接到服务器,但不能连接所提供的数据库。 验证该数据库的名称以及该用户凭据有适当的权限来访问该数据库。

显示详细信息中,应显示从数据源收到的错误消息。 对于 SQL Server,你应看到如下所示的内容。

Cannot open database "AdventureWorks" requested by the login. The login failed. Login failed for user 'username'.

错误:无法连接。 详细信息:“数据网关中的未知错误”

此错误可能会由于不同的原因发生。 请务必验证你可以从承载网关的计算机连接到数据源。 这可能是不可访问的服务器的结果。

显示详细信息中,你将看到错误代码 DM_GWPipeline_UnknownError

你还可以查看“事件日志”>“应用程序和服务日志” > “本地数据网关服务”,了解更多详细信息。

错误:我们在尝试连接到时遇到错误。 详细信息:“我们已连接到数据网关,但此网关无法访问本地数据源。”

我们无法连接指定的数据源。 请务必验证为该数据源所提供的信息。

显示详细信息中,你将看到错误代码 DM_GWPipeline_Gateway_DataSourceAccessError

如果基础错误消息类似于以下内容,这意味着你正在对数据源使用的帐户不是该 Analysis Services 实例的服务器管理员。 了解详细信息

The 'CONTOSO\account' value of the 'EffectiveUserName' XML for Analysis property is not valid.

如果基础错误消息类似以下消息,则可能意味着 Analysis Services 的服务帐户可能缺少 token-groups-global-and-universal (TGGAU) 目录属性。

The user name or password is incorrect.

具有 Windows 2000 以前版本兼容访问权限的域将启用 TGGAU 属性。 但是,最新创建的域不会默认启用此属性。 你可以在此处了解更多相关信息。

通过执行以下操作对此进行确认。

  1. 连接 SQL Server Management Studio 中的 Analysis Services 计算机。 在高级连接属性中,输入问题用户的 EffectiveUserName,并检查是否会产生错误。

  2. 可以使用 dsacls Active Directory 工具来验证是否列出了属性。 此工具通常可在域控制器上找到。 你需要知道帐户的可分辨域名是什么,并将其传递给该工具。

    dsacls "CN=John Doe,CN=UserAccounts,DC=contoso,DC=com"
    

    你应该在结果中看到与以下类似的内容。

        Allow BUILTIN\Windows Authorization Access Group
                                      SPECIAL ACCESS for tokenGroupsGlobalAndUniversal
                                      READ PROPERTY
    

若要更正此问题,你需要启用用于 Analysis Services Windows 服务的帐户上的 TGGAU。

用户名或密码错误的另一种可能

如果 Analysis Services 服务器与用户位于不同的域,并且没有建立双向信任,则也可能导致此错误。

你需要通过域管理员来验证域间的信任关系。

在 Power BI 服务中使用 Analysis Services 的“获取数据”功能时,无法查看数据网关数据源

确保你的帐户列于网关配置中数据源的用户选项卡。 如果你没有权限访问网关,请与网关管理员核对,并请他们进行验证。 仅用户列表中的帐户可查看列于 Analysis Services 列表中的数据源。

数据集

错误:对于此行没有足够的空间。

如果有大于 4 MB 大小的单个行,则会出现此错误。 需要从数据源确定行是什么,并尝试将其筛选出或减少该行的大小。

错误:提供的服务器名称与 SQL Server SSL 证书上的服务器名称不一致。

如果证书 CN 针对的是服务器完全限定的域名 (FQDN),而你只提供了服务器 netbios 名称,就会生成此错误。 这会导致证书不匹配。 若要解决此问题,你需要将网关数据源和 PBIX 文件内的服务器名称设置为使用服务器的 FQDN。

我在配置计划的刷新时看不到本地数据网关。

这可能是由几种不同的原因所致。

  1. 你在 Power BI Desktop 中输入的服务器和数据库名称和网关数据源中的名称不一致。 值必须相同。 不区分大小写。

  2. 网关配置中数据源的用户选项卡上未列出你的帐户。 必须与要添加到相应列表的网关的管理员联系。

  3. Power BI Desktop 文件中有多个数据源,并不是所有这些数据源都配置为网关数据源。 必须定义每个网关数据源,这样相应网关才能在计划的刷新内显示。

Warning:

如果任一数据源要求进行 OAuth 身份验证,则无法将它配置为本地数据网关数据源。 本地数据网关暂不支持 OAuth 身份验证。 必须从 Power BI Desktop 中删除要求进行 OAuth 身份验证的数据源,才能配置计划的刷新。

错误:网关客户端上收到的未压缩数据已超出限制。

每个表的未压缩数据量的确切限制为 10GB。 如果遇到此问题,可以使用实用选项来优化和避免此类问题发生。 具体而言,减少使用高度重复内容、过长的字符串值,并改用规范化的键或删除列(如果不使用)将会有所帮助。

报表

报表无法访问数据源,因为你无权通过本地数据网关访问我们的数据源。

这通常是由于以下原因之一导致的。

  1. 数据源信息与基础数据集中的内容不匹配。 为本地数据网关定义的数据源和为 Power BI Desktop 提供的内容之间的服务器和数据库名称需要匹配。 如果在 Power BI Desktop 中使用 IP 地址,则用于本地数据网关的数据源也需要使用 IP 地址。

  2. 你的组织内的任何网关上均没有可用的数据源。 可以在新的或现有的本地数据网关上配置数据源。

错误:数据源访问错误。 请联系网关管理员。

如果此报表正在使用实时 Analysis Services 连接,你可能遇到的问题是值被传入无效或无权访问 Analysis Services 计算机的 EffectiveUserName 中。 通常来说,出现身份验证问题是由于传给 EffectiveUserName 的值与本地用户主体名称 (UPN) 不匹配。

若要对此进行确认,可执行以下操作。

  1. 网关日志中查找有效的用户名。

  2. 传递值后,验证其是否正确。 如果它是你的用户,可以从命令提示符处使用以下命令,查看 UPN 应该是什么。 UPN 类似电子邮件地址。

    whoami /upn
    

或者,你可以查看 Power BI 从 Azure Active Directory 获取的内容。

  1. 浏览到 https://graphexplorer.cloudapp.net

  2. 选择右上角的“登录”。

  3. 运行以下查询。 你将看到相当大的 JSON 响应。

    https://graph.windows.net/me?api-version=1.5
    
  4. 查找 userPrincipalName

如果你的 Azure Active Directory UPN 与本地 Active Directory UPN 不匹配,则可以使用映射用户名功能将其替换为有效的值。 或者,可以通过租户管理员或本地 Active Directory 管理员更改 UPN。

防火墙或代理

有关为你的网关提供代理信息的信息,请参阅为 Power BI 网关配置代理设置

可以在 PowerShell 提示符处运行 Test-NetConnection 以进行测试,从而确定防火墙或代理是否可能会阻止连接。 这将测试与 Azure 服务总线的连接性。 这仅测试网络连接,与云服务器服务或网关没有任何关系。 它有助于确定你的计算机是否可以实际连接到互联网。

Test-NetConnection -ComputerName watchdog.servicebus.windows.net -Port 9350
Note:

Test-NetConnection 仅适用于 Windows Server 2012 R2 及更高版本。 还适用于 Windows 8.1 及更高版本。 在旧版操作系统中,可以使用 Telnet 测试端口连接性。

结果应与以下所示类似。 不同之处在于 TcpTestSucceeded。 如果 TcpTestSucceeded 不为 *true*,则你可能会被防火墙阻止。

ComputerName           : watchdog.servicebus.windows.net
RemoteAddress          : 70.37.104.240
RemotePort             : 5672
InterfaceAlias         : vEthernet (Broadcom NetXtreme Gigabit Ethernet - Virtual Switch)
SourceAddress          : 10.120.60.105
PingSucceeded          : False
PingReplyDetails (RTT) : 0 ms
TcpTestSucceeded       : True

如果你想做到面面俱到,请将 ComputerNamePort 值替换为对端口列出的相应项

防火墙可能也会阻止 Azure 服务总线与 Azure 数据中心之间的连接。 如果是这种情况,那么你需要把这些数据中心中你所在区域的 IP 地址列入白名单(取消阻止)。 你可以在此处获得 Azure IP 地址列表。

通过执行以下操作,可以找到你所在的数据中心区域:

  1. 选择 Power BI 服务右上角方的 ?

  2. 选择“关于 Power BI”。

  3. 你的数据区域将被列入“你的数据存储于”。

如果你仍未前往任何位置,则可以尝试使用 fiddler 或 netsh 一类的工具来获取网络跟踪,不过这些都是高级收集方法,并且你在分析所收集的数据时可能需要帮助。 可以联系支持人员以获得帮助。

性能

性能计数器

有多个性能计数器可用于度量网关的活动。 这些计数器有助于你判断是否出现高活动负载,以及是否需要新建网关。 这些计数器不反映某个活动所花的时间。

可以通过 Windows 性能监视器工具访问这些计数器。

以下是这些计数器的一般分组。

计数器类型 说明
ADO.NET 适用于任何 DirectQuery 连接。
ADOMD 适用于 Analysis Services 2014 和更早版本。
OLEDB 供某些数据源使用。 包括 SAP HANA 和 Analysis Service 2016 及更高版本。
Mashup 包括任何导入的数据源。 如果要执行计划刷新或按需刷新,则该刷新将通过 mashup 引擎进行。

以下是可用的性能计数器的列表。

计数器 说明
执行的 ADO.NET 开放式连接次数/秒 每秒执行的 ADO.NET 开放式连接操作数量(成功或失败)。
ADO.NET 开放式连接失败次数/秒 每秒 ADO.NET 开放式连接操作失败次数。
执行的 ADO.NET 查询数/秒 每秒执行的 ADO.NET 查询数量(成功或失败)。
ADO.NET 查询失败数/秒 每秒执行的 ADO.NET 查询失败数。
执行的 ADOMD 开放式连接次数/秒 每秒执行的 ADOMD 开放式连接操作数量(成功或失败)。
ADOMD 开放式连接失败次数/秒 每秒 ADOMD 开放式连接操作失败次数。
执行的 ADOMD 查询数/秒 每秒执行的 ADOMD 查询数量(成功或失败)。
ADOMD 查询失败数/秒 每秒执行的 ADOMD 查询失败数。
执行的所有开放式连接次数/秒 每秒执行的开放式连接操作数量(成功或失败)。
开放式连接失败总数/秒 每秒执行的开放式连接操作失败数量。
执行的查询总数/秒 每秒执行的查询数量(成功或失败)。
ADO.NET 连接池中的项目数 ADO.NET 连接池中的项目数
OLEDB 连接池中的项目数 OLEDB 连接池中的项目数
服务总线池中的项目数 服务总线池中的项目数
执行的 Mashup 开放式连接次数/秒 每秒执行的 Mashup 开放式连接操作数量(成功或失败)。
Mashup 开放式连接失败数/秒 每秒 Mashup 开放式连接操作失败次数。
执行的 Mashup 查询数/秒 每秒执行的 Mashup 查询数量(成功或失败)。
Mashup 查询失败数/秒 每秒执行的 Mashup 查询失败数。
多结果集 OLEDB 查询失败数/秒 每秒执行的多结果集 OLEDB 查询失败数。
执行的 OLEDB 多结果集查询数/秒 每秒执行的 OLEDB 多结果集查询数量(成功或失败)。
执行的 OLEDB 开放式连接次数/秒 每秒执行的 OLEDB 开放式连接操作数量(成功或失败)。
OLEDB 开放式连接失败数/秒 每秒 OLEDB 开放式连接操作失败次数。
执行的 OLEDB 查询数/秒 每秒执行的 OLEDB 多结果集查询数量(成功或失败)。
OLEDB 查询失败数/秒 每秒执行的多结果集 OLEDB 查询失败数。
执行的 OLEDB 单结果集查询数/秒 每秒执行的 OLEDB 单结果集查询数量(成功或失败)。
查询失败数/秒 每秒执行的查询失败数。
单结果集 OLEDB 查询失败数/秒 每秒执行的单结果集 OLEDB 查询失败数。

查看低性能查询

可能会发现通过网关的响应较比较慢。 这可能发生在执行 DirectQuery 查询或在刷新导入数据集时。 可以启用附加的日志记录用于输出查询及其执行时间,以帮助了解哪些查询执行缓慢。 找到长时间运行的查询后,可能需要对数据源进行额外修改才能优化查询性能。 例如,调整 SQL Server 查询的索引。

需要修改两个配置文件才能确定查询的持续时间。

Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config

在 Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config 文件中将 EmitQueryTraces 的值从 False 更改为 True。 默认情况下,此文件位于 C:\Program Files\On-premises data gateway。 启用 EmitQueryTraces 开始对从网关发送到数据源的查询进行日志记录。

Important:

启用 EmitQueryTraces 可能会根据网关使用情况显著增加日志大小。 完成日志审阅后,需要将 EmitQueryTraces 设置为 False。 不建议长期将此设置保留为启用状态。

<setting name="EmitQueryTraces" serializeAs="String">
    <value>True</value>
</setting>

示例查询条目

DM.EnterpriseGateway Information: 0 : 2016-09-15T16:09:27.2664967Z DM.EnterpriseGateway 4af2c279-1f91-4c33-ae5e-b3c863946c41    d1c77e9e-3858-4b21-3e62-1b6eaf28b176    MGEQ    c32f15e3-699c-4360-9e61-2cc03e8c8f4c    FF59BC20 [DM.GatewayCore] Executing query (timeout=224) "<pi>
SELECT
TOP (1000001) [t0].[ProductCategoryName],[t0].[FiscalYear],SUM([t0].[Amount])
 AS [a0]
FROM
(
(select [$Table].[ProductCategoryName] as [ProductCategoryName],
    [$Table].[ProductSubcategory] as [ProductSubcategory],
    [$Table].[Product] as [Product],
    [$Table].[CustomerKey] as [CustomerKey],
    [$Table].[Region] as [Region],
    [$Table].[Age] as [Age],
    [$Table].[IncomeGroup] as [IncomeGroup],
    [$Table].[CalendarYear] as [CalendarYear],
    [$Table].[FiscalYear] as [FiscalYear],
    [$Table].[Month] as [Month],
    [$Table].[OrderNumber] as [OrderNumber],
    [$Table].[LineNumber] as [LineNumber],
    [$Table].[Quantity] as [Quantity],
    [$Table].[Amount] as [Amount]
from [dbo].[V_CustomerOrders] as [$Table])
)
 AS [t0]
GROUP BY [t0].[ProductCategoryName],[t0].[FiscalYear] </pi>"

Microsoft.PowerBI.DataMovement.Pipeline.GatewayCore.dll.config

在 Microsoft.PowerBI.DataMovement.Pipeline.Diagnostics.dll.config 文件中将 TraceVerbosity 的值从 4 更改为 5。 默认情况下,此文件位于 C:\Program Files\On-premises data gateway。 更改此设置会将详细条目写入网关日志。 其中包括显示持续时间的条目。

Important:

将 TraceVerbosity 设置为 5 可能会大大增加日志大小,具体视网关使用情况而定。 完成日志审阅后,不妨将 TraceVerbosity 设置为 4。 不建议长期将此设置保留为启用状态。

<setting name="TracingVerbosity" serializeAs="String">
    <value>5</value>
</setting>

活动类型

活动类型 说明
MGEQ 通过 ADO.NET 执行的查询。 包括 DirectQuery 数据源。
MGEO 通过 OLEDB 执行的查询。 这包括 SAP HANA 和 Analysis Services 2016。
MGEM 从 Mashup 引擎执行的查询。 适用于使用计划刷新或按需刷新的导入数据集。

确定查询的持续时间

若要确定查询数据源所花的时间,可以执行以下操作。

  1. 打开网关日志。

  2. 搜索活动类型来查找查询。 此处的示例为 MGEQ。

  3. 记下次要 GUID,因为这是请求 id。

  4. 继续搜索 MGEQ,直到找到具有持续时间的 FireActivityCompletedSuccessfullyEvent 条目。 确认该条目具有相同请求 id。持续时间以毫秒为单位。

    DM.EnterpriseGateway Verbose: 0 : 2016-09-26T23:08:56.7940067Z DM.EnterpriseGateway baf40f21-2eb4-4af1-9c59-0950ef11ec4a    5f99f566-106d-c8ac-c864-c0808c41a606    MGEQ    21f96cc4-7496-bfdd-748c-b4915cb4b70c    B8DFCF12 [DM.Pipeline.Common.TracingTelemetryService] Event: FireActivityCompletedSuccessfullyEvent (duration=5004)
    
    Note:

    FireActivityCompletedSuccessfullyEvent 是一个详细条目。 除非 TraceVerbosity 处于级别 5,否则不会记录此条目。

用于故障排除的工具

从网关配置器收集日志

可以收集多个网关日志,应始终从日志入手。 在安装网关后收集日志的最简单方法是通过用户界面。 在“本地数据网关”用户界面中,依次选择“诊断”和页面底部附近的“导出日志”链接,如下图所示。

on-prem-data-gateway-UI-logs

安装程序日志

%localappdata%\Temp\On-premises_data_gateway_*.log

配置日志

%localappdata%\Microsoft\on-premises data gateway\GatewayConfigurator*.log

本地数据网关服务日志

C:\Users\PBIEgwService\AppData\Local\Microsoft\on-premises data gateway\Gateway*.log

事件日志

本地数据网关服务事件日志位于“应用程序和服务日志”下。

on-prem-data-gateway-event-logs

Fiddler 跟踪

Fiddler 是 Telerik 提供的一款用于监视 HTTP 流量的免费工具。 可以从客户端计算机通过 Power BI 服务来回查看。 这可能会显示错误和其他相关的信息。

刷新历史记录

在计划刷新中使用网关时,如果需要创建一个支持请求,刷新历史记录可帮助查看发生了什么错误,以及提供有用的数据。 可以查看计划刷新和按需刷新。 下面是有关如何刷新历史记录的说明。

  1. 在 Power BI 导航窗格中的数据集中,选择一个数据集>打开菜单>计划刷新

  2. 设置...>计划刷新中,选择刷新历史记录

若要详细了解如何对刷新方案进行故障排除,请参阅对刷新方案进行故障排除一文。

另请参阅

为 Power BI Gateway 配置代理设置
本地数据网关
本地数据网关 - 深入了解
管理数据源 - Analysis Services
管理数据源 - SAP HANA
管理数据源 - SQL Server
管理数据源 - 导入/计划刷新
更多问题? 尝试参与 Power BI 社区