Power BI Desktop 出现 Npgsql 3.0.3 错误

Posted

技术标签:

【中文标题】Power BI Desktop 出现 Npgsql 3.0.3 错误【英文标题】:Npgsql 3.0.3 error with Power BI Desktop 【发布时间】:2016-01-19 21:20:59 【问题描述】:

我在连接到需要 SSL 的 AWS Postgres 数据库时收到以下错误。我最近从 npgsql 2.3.2 (这是错误的)升级到 3.0.3 将无法连接。任何建议将不胜感激。

DataSource.Error:TlsClientStream.ClientAlertException: CertificateUnknown:不接受服务器证书。连锁状态: 无法将证书链构建到受信任的根颁发机构。 . 在 TlsClientStream.TlsClientStream.ParseCertificateMessage(Byte[] buf, Int32& pos) 在 TlsClientStream.TlsClientStream.TraverseHandshakeMessages() 在 TlsClientStream.TlsClientStream.GetInitialHandshakeMessages(布尔值 允许应用程序数据)在 TlsClientStream.TlsClientStream.PerformInitialHandshake(字符串 主机名,X509CertificateCollection 客户端证书, 远程证书验证回调 remoteCertificateValidationCallback,布尔值 checkCertificateRevocation) 详细信息: DataSourceKind=PostgreSQL

【问题讨论】:

【参考方案1】:

Npgsql 2.x 默认不对服务器的证书进行验证,所以接受自签名证书。新的默认设置是执行验证,这可能是连接失败的原因。指定信任服务器证书连接字符串参数以恢复以前的行为。

您可以在Npgsql security doc page 上阅读更多信息,另请注意,我们的migration notes 中提到了此更改。

【讨论】:

这很有帮助。不幸的是,Power BI Desktop 不允许直接编辑连接字符串。我会将此问题报告给 Microsoft 以寻求解决。 再说一次,我对 Power BI 一无所知,但请注意,新的“信任服务器证书”参数是“标准”参数,在 SqlClient 中受支持。应该有一种方法可以让您以某种方式访问​​连接字符串... Jon Capezzuto,您收到 Microsoft 的回复了吗?【参考方案2】:

我在将 PowerBI 连接到本地托管的 PostgreSQL 服务器时遇到了同样的问题,如果您能获得正确的信息,结果证明很容易解决。最近的 Npgsql 版本只有在信任服务器证书的情况下才会通过 SSL 连接。作为一个 Windows 应用程序,PowerBI 使用 Windows 证书存储来决定信任什么。如果您可以获得 PostgreSQL 服务器的 SSL 证书(或用于签署该证书的 CA 证书),然后告诉 Windows 信任该证书,PowerBI 也会信任它。

在 PostgreSQL 服务器的配置文件夹中有一个 postgresql.conf 文件,在其中搜索 ssl 设置,有一个带有 ssl 证书位置的文件。注意不是包含私钥的密钥文件,只有包含公钥的证书文件。将其或其内容复制到运行 PowerBI 的机器上,然后使用 Run | 导入。 MMC |添加插件...证书(谷歌搜索)

导入证书后查看服务器名称,并使用相同的服务器名称从 PowerBI 进行连接(因此证书与连接匹配)。这为我解决了问题。如果 PostgreSQL 被配置为坚持 SSL 连接,您可能也必须为 ODBC 连接做同样的事情。

【讨论】:

如何在excel中导入postgresql证书? 开始 > 运行 > mmc.exe。文件 > 添加/删除管理单元;独立选项卡 > 添加;证书管理单元 > 单击添加;向导 > 计算机帐户 > 本地计算机 > 完成。关闭对话框。导航到证书(本地计算机)。如果您有服务器本身的证书,请选择其他人。右键单击商店并选择所有任务 --> 导入。按照向导并提供您拥有的证书文件; 实际上我已经完成了该导入,但我一直收到相同的错误,说明服务器名称未包含在证书中【参考方案3】:

这不是最好的方法,但对我有用,因为如果您出于安全原因不需要加密。

转到您的数据库服务器上的 Postgres 配置文件并从

ssl = 真

ssl = 假

然后打开您的power bi桌面文件->选项和设置->数据源设置->然后在全局中您将保存您的连接按编辑权限并取消选中“加密连接”

然后就可以了

警告:如果您的数据库是公开的,则不建议这样做。

问候,

戴夫利克

【讨论】:

警告在这里强调的不够强烈。 它工作的人,反正对于内部开发我会非常好的继续,感谢您的大力帮助。【参考方案4】:

npgsql 的文档给出了解决方案,将连接字符串中的默认 信任服务器证书 'false' 更改为 'true'。 不幸的是,Excel (AFAIK) 和 Power BI 都不允许您编辑连接字符串。因此,如果您无法从数据库管理员那里获得 SSL 证书(如 another answer 中所建议的那样),或者 SSL 证书的服务器名称与您连接的名称不同(在我的情况下是 IP 地址),则没有可以做很多事情。

我可以看到两种解决方法。来自 npgsql 的 Shay & co(顺便说一句,他们做得很好)为用户提供了一些方法来更改 connection string parameters 的默认设置。或者微软允许用户在 Power BI(和 Excel)的连接对话框中发送关键字。

【讨论】:

感谢拉里的评论,感谢并承认。尽管如此,由于我现在花了整整三天多的时间来寻找这个问题的解决方案,但我觉得提供一个说明目前没有解决这个问题的答案是很有价值的。它可能会使后续用户免于经历与我相同的情况。【参考方案5】:

我能够通过在我的机器上安装 Amazon RDS 公有证书来解决此问题。完成此操作后,我就可以连接了。

我遵循的步骤:

    下载AWS RDS公有证书1 从下载的 .pem 文件创建一个 .crt 文件。示例说明 这里2 在机器上安装证书(.crt 文件)。 3 连接!

【讨论】:

我已经执行了所有这 3 个步骤,但仍然无法连接。错误仍然存​​在。可能的原因是什么?

以上是关于Power BI Desktop 出现 Npgsql 3.0.3 错误的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Power BI Desktop概念学习系列之Microsoft Power BI Desktop的官网自带示例数据(图文详解)

Microsoft Power BI Desktop概念学习系列之Microsoft Power BI Desktop的下载和安装(图文详解)

Power BI Desktop安装后,软件打不开。弹出“出现错误 无法加载一个或多个请求的类型。有关更...

Power BI官方视频 Power BI Desktop 8月份更新功能概述

Power BI Python 在Power BI Desktop中Python代码如何使用Power Query数据

来自 Power Query 的 Power BI Desktop 增量表更新