我在从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端口是开放的。 我的连接有什么问题?
当前回答
虽然一般答案本身是正确的,但我发现它还不足以解决我的SQL Server导入和导出向导的问题。假设你有一个有效的(自动的)基于Windows安全的登录:
ConnectionString
Data Source=localhost;
Initial Catalog=<YOUR DATABASE HERE>;
Integrated Security=True;
Encrypt=True;
TrustServerCertificate=True;
User Instance=False
这可以是完整的ConnectionString(都在一行上),也可以将这些值单独应用到它们的字段。
其他回答
在把一个项目从。net 5迁移到。net 6之后,我也遇到了同样的问题。我尝试了建议的解决方案(TrustServerCertificate=True或Encrypt=False),它们按预期工作,但我有一个限制,不能更改连接字符串。因此,如果是这种情况,您仍然可以使用System.Data.SqlClient作为nuget包。就像这里解释的那样,它仍然被维护,但所有新的东西都将进入Microsoft.Data.SqlClient。
关闭连接字符串中的加密。你可以通过在你的连接字符串中添加以下内容来实现:
encrypt=false
我添加了这2行到ConnectionString和它工作
Trusted_Connection=True
TrustServerCertificate=True
从IIS访问SQLServer时遇到同样的问题。添加TrustServerCertificate=True没有帮助。
可以在MS文档中看到一条注释:确保SQLServer服务帐户可以访问您正在使用的TLS证书。(NT服务\ MSSQLSERVER)
打开个人存储,右键单击证书->管理私钥->添加SQL服务帐户并给予完全控制。
重新启动SQL服务。它工作。
"ConnectionStrings": {
"DefaultConnection": "Server=DESKTOP-O5SR0H0\\SQLEXPRESS;Database=myDataBase;Trusted_Connection=True;TrustServerCertificate=True;"
}
}