我在从Azure网站连接我的DB时遇到了一个错误,它是在虚拟机角色(我有SQL虚拟机角色)。VM Role和Azure Website都在West zone。我面临着以下问题:
SqlException (0x80131904):成功建立了与服务器的连接,但是在登录过程中发生了错误。(提供者:SSL提供者,错误:0 -证书链是由一个不受信任的机构颁发的。)]
我可以使用SSMS连接到我的DB。虚拟机角色的1433端口是开放的。 我的连接有什么问题?
我在从Azure网站连接我的DB时遇到了一个错误,它是在虚拟机角色(我有SQL虚拟机角色)。VM Role和Azure Website都在West zone。我面临着以下问题:
SqlException (0x80131904):成功建立了与服务器的连接,但是在登录过程中发生了错误。(提供者:SSL提供者,错误:0 -证书链是由一个不受信任的机构颁发的。)]
我可以使用SSMS连接到我的DB。虚拟机角色的1433端口是开放的。 我的连接有什么问题?
当前回答
如果尝试使用SSMS连接时看到此错误消息,请将TrustServerCertificate=True添加到附加连接参数中。
其他回答
我决定添加另一个答案,因为这篇文章会作为这个错误的第一个谷歌结果弹出。
如果你在2022年1月之后得到这个错误,可能是在从System.Data.SqlClient迁移到Microsoft.Data.SqlClient之后,或者只是将Microsoft.Data.SqlClient更新到4.0.0或更高版本之后,这是因为MS引入了一个破坏性的更改:
https://learn.microsoft.com/sql/connect/ado-net/introduction-microsoft-data-sqlclient-namespace?view=sql-server-ver15#breaking-changes-in-40
Breaking changes in 4.0 Changed Encrypt connection string property to be true by default. The default value of the Encrypt connection setting has been changed from false to true. With the growing use of cloud databases and the need to ensure those connections are secure, it's time for this backwards-compatibility-breaking change. Ensure connections fail when encryption is required In scenarios where client encryption libraries were disabled or unavailable, it was possible for unencrypted connections to be made when Encrypt was set to true or the server required encryption.
此更改是在2021年8月的SqlClient拉取请求中进行的,其中有关于此更改的额外讨论。
快速解决方法是在连接字符串中添加Encrypt=False。
如果尝试使用SSMS连接时看到此错误消息,请将TrustServerCertificate=True添加到附加连接参数中。
如果在ODBC设置(32或64)中已经创建了到服务器的ODBC连接(使用ODBC Driver 18 for SQL server),则需要配置该连接,并按3次“Next”。在最后一个屏幕中,中间有一个“信任服务器证书”复选框。设置为勾选。这样就行了。添加“TrustServerCertificate=True”到连接字符串,正如在其他答案中建议的那样,对我不起作用。
如果您使用Version 18并通过pyodbc访问,它是"TrustServerCertificate=yes",您需要添加到连接中
我在试图运行剖析器时遇到了这个错误,即使我的连接已经检查了信任服务器证书,并且我在高级部分添加了TrustServerCertificate=True。我改为以管理员身份运行SSMS实例,分析器启动时没有问题。(我以前发现,即使是本地连接也需要很长时间才能连接,以管理员身份运行也会有所帮助)。