错误:尝试连接到 SQL Server 时"The target principal name is incorrect"



我有一台运行SQL Server的Windows 2012服务器,我使用SSMS通过VPN从Windows 10笔记本电脑远程连接到该SQL Server。最近,我不得不更换笔记本电脑上的硬盘,我没有完全复制我的所有配置,现在我得到了错误:";目标主体名称不正确。无法生成SSPI上下文。(.Net SqlClient数据提供程序(";

当我四处搜索时,人们说要创建SPN或运行Kerberos配置管理器,但我没有使用Kerberos。其他文章提到了Active Directory,但我没有使用Active Directory,我的笔记本电脑被设置为工作站,而不是在域中。

我以前有过这样的工作,我确实在笔记本电脑上的用户中设置了一个Windows凭据,以便使用正确的域、用户名和密码连接到SQL Server。

我已经尝试了简单的方法:在笔记本电脑主机文件中正确设置IP地址,重新启动服务器和桌面,在服务器上设置密码不过期。

转到"控制面板"-->用户帐户-->Windows凭据。

请确保已将主机名/ip地址添加到主机文件中。

添加新的Windows凭据。对于Internet或网络地址,请使用您放入主机文件中的主机名,但也可以将sql server端口号附加到末尾,中间加一个冒号(通常为:1433(。

对于用户名,请在用户名前面加上域名或工作组。就我而言,这是一个工作组。

最后,输入与用户名关联的密码。

如果使用SSMS连接到其他主机上的SQL Server实例,并且使用Windows身份验证,则SSMS将使用Kerberos在SQL实例上进行身份验证。这是必需的,因为SQL server需要某种方法来确保笔记本电脑中SSMS的安全上下文是有效的。

请尝试按照中所述的步骤进行操作https://learn.microsoft.com/en-us/archive/blogs/farukcelik/new-tool-microsoft-kerberos-configuration-manager-for-sql-server-is-ready-to-resolve-your-kerberosconnectivity-issues

如果您不想这样做,可以在安装SQL实例的同一服务器上运行SSMS,创建SQL本地帐户并使用它们,而不是使用Windows凭据登录。

在C#控制台应用程序中通过ServicePointManger.SecurityProtocol指定TLS 1.2后,我遇到了这个问题。添加TLS 1.1(以及保留TLS 1.2,请参阅下文(解决了我的问题。我猜我所在的网络的某个部分还没有使用TLS 1.2,而且由于最初没有指定安全协议,SQL连接能够确定自己的协议。一旦我指定要专门使用TLS 1.2,我就开始看到这个错误。

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;

相关内容

最新更新