114

我正在努力获得从机器 A 到运行 SQL Server 的机器 B 的 SQL Server 连接。

我用谷歌搜索了很多,我发现的所有东西都没有奏效。他们也不会逐步引导您完成解决此问题的过程。

我们没有使用 Kerberos,而是配置了 NTLM。

在此处输入图像描述

涉及的机器有(出于安全目的,xx 用于掩盖某些机器名称):

  • xxPRODSVR001 - Windows Server 2012 域控制器
  • xxDEVSVR003 - Windows Server 2012(这台机器正在生成错误)
  • xxDEVSVR002 - Windows Server 2012(这台机器正在运行 SQL Server 2012)

以下 SPN 已在 DC (xxPRODSVR001) 上注册。出于安全目的,我用 yyy 遮盖了域:

为 CN=xxDEVSVR002、CN=Computers、DC=yyy、DC=local 注册的 ServicePrincipalNames:

            MSSQLSvc/xxDEVSVR002.yyy.local:49298

            MSSQLSvc/xxDEVSVR002.yyy.local:TFS

            RestrictedKrbHost/xxDEVSVR002

            RestrictedKrbHost/xxDEVSVR002.yyy.local

            Hyper-V Replica Service/xxDEVSVR002

            Hyper-V Replica Service/xxDEVSVR002.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR002

            Microsoft Virtual System Migration Service/xxDEVSVR002.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR002

            Microsoft Virtual Console Service/xxDEVSVR002.yyy.local

            SMTPSVC/xxDEVSVR002

            SMTPSVC/xxDEVSVR002.yyy.local

            WSMAN/xxDEVSVR002

            WSMAN/xxDEVSVR002.yyy.local

            Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/xxDEVSVR002.yyy.local

            TERMSRV/xxDEVSVR002

            TERMSRV/xxDEVSVR002.yyy.local

            HOST/xxDEVSVR002

            HOST/xxDEVSVR002.yyy.local

为 CN=xxDEVSVR003、CN=Computers、DC=yyy、DC=local 注册的 ServicePrincipalNames:

            MSSQLSvc/xxDEVSVR003.yyy.local:1433

            MSSQLSvc/xxDEVSVR003.yyy.local

            Hyper-V Replica Service/xxDEVSVR003

            Hyper-V Replica Service/xxDEVSVR003.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR003

            Microsoft Virtual System Migration Service/xxDEVSVR003.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR003

            Microsoft Virtual Console Service/xxDEVSVR003.yyy.local

            WSMAN/xxDEVSVR003

            WSMAN/xxDEVSVR003.yyy.local

            TERMSRV/xxDEVSVR003

            TERMSRV/xxDEVSVR003.yyy.local

            RestrictedKrbHost/xxDEVSVR003

            HOST/xxDEVSVR003

            RestrictedKrbHost/xxDEVSVR003.yyy.local

            HOST/xxDEVSVR003.yyy.local

现在,如果只有 SQL Server 错误消息更具描述性并告诉我它试图连接的主体名称,我可能能够诊断出这个。

那么任何人都可以指导我如何解决这个问题,或者你能在我提供的内容中看到任何错误吗?

我很乐意生成更多调试信息,请告诉我您需要什么。

4

49 回答 49

73

我正在使用的 ASP.NET MVC 应用程序遇到了这个问题。

我意识到我最近更改了密码,我可以通过注销并重新登录来修复它。

于 2017-04-14T21:28:19.003 回答
22

尝试设置Integrated Security=true从连接字符串中删除此参数。


重要提示:正如用户@Auspex 评论的那样,

删除集成安全将防止此错误,因为尝试使用 Windows 凭据登录时会发生错误。不幸的是,大多数时候,您希望能够使用您的 Windows 凭据登录

于 2017-04-28T05:15:13.090 回答
20

尝试通过 Windows 身份验证时遇到同样的错误。听起来很可笑,但以防万一它可以帮助其他人:这是因为我的域帐户在我仍然登录时以某种方式被锁定(!)。解锁帐户修复它。

于 2018-01-24T09:17:50.850 回答
18

SSPI 上下文错误肯定表明正在尝试使用Kerberos进行身份验证。

由于 Kerberos 身份验证SQL Server 的 Windows 身份验证依赖于 Active Directory,这需要在您的计算机和网络域控制器之间建立推力关系,因此您应该从验证该关系开始。

您可以通过以下 Powershell 命令Test-ComputerSecureChannel快速检查该关系。

Test-ComputerSecureChannel -Verbose

在此处输入图像描述

如果它返回False,您必须修复您的计算机 Active Directory 安全通道,因为没有它,您的计算机之外就无法进行域凭据验证。

您可以通过以下Powershell命令修复您的计算机安全通道:

Test-ComputerSecureChannel -Repair -Verbose

如果上述方法不起作用(因为您的域凭据不起作用,因为机器不受信任),您可以NETDOM RESET从提升的cmd.exe(不是 PowerShell)提示符中改用:

NETDOM RESET %COMPUTERNAME% /UserO:domainAdminUserName /Password0:* /SecurePasswordPrompt

(是的,命令行参数确实有一个O( Capital-"Oh",而不是零0)。该/Password0:* /SecurePasswordPrompt选项将使用凭据弹出窗口,而不是让您直接在命令行中输入密码,您绝对不能这样做) .

检查安全事件日志,如果您使用的是 kerberos,您应该会看到使用身份验证包的登录尝试:Kerberos。

NTLM 身份验证可能失败,因此正在尝试进行 kerberos 身份验证。您可能还会在安全事件日志中看到 NTLM 登录尝试失败?

您可以在 dev 中打开 kerberos 事件日志记录,以尝试调试 kerberos 失败的原因,尽管它非常冗长。

Microsoft 的SQL Server 的 Kerberos 配置管理器可以帮助您快速诊断和修复此问题。

这是一个值得阅读的好故事:http: //houseofbrick.com/microsoft-made-an-easy-button-for-spn-and-double-hop-issues/

于 2015-09-03T23:42:11.283 回答
15

我使用 PIN 码而不是密码登录 Windows 10。我注销并使用密码重新登录,并且能够通过 Management Studio 进入 SQL Server。

于 2018-05-21T15:11:18.380 回答
10

只是为这个最模棱两可的错误添加另一个潜在的解决方案The target principal name is incorrect. Cannot generate SSPI context. (.Net SqlClient Data Provider)

验证 ping SQL Server 时解析的 IP 是否与配置管理器中的 IP 相同。要检查,请打开 SQL Server 配置管理器,然后转到 SQL Server 网络配置 > MSSQLServer 的协议 > TCP/IP。

确保 TCP/IP 已启用,并在 IP 地址选项卡中,确保服务器在 ping 时解析到的 IP 与此处相同。这为我解决了这个错误。

于 2018-01-29T18:14:24.347 回答
7

该问题似乎是 Windows 凭据问题。我在使用 VPN 的工作笔记本电脑上遇到了同样的错误。我应该以我的域/用户名登录,这是我在直接连接时成功使用的,但是一旦我通过另一个连接移动到 VPN,我就会收到此错误。我认为这是一个 DNS 问题,因为我可以 ping 服务器,但事实证明我需要从命令提示符下以我的用户身份显式运行 SMSS。

例如 runas /netonly /user:YourDoman\YourUsername "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe"

于 2020-03-03T01:45:13.770 回答
6

登录到您的 SQL Box 和您的客户端并输入:

ipconfig /flushdns
nbtstat -R

如果这不起作用,请在您的客户端计算机上更新您的 DHCP……这适用于我们办公室的 2 台 PC。

于 2016-11-15T13:40:51.093 回答
5

我只是遇到了这个问题并通过做两件事来修复它:

  1. 使用 ADSI Edit 向服务帐户授予读/写 servicePrincipalName 权限,如https://support.microsoft.com/en-us/kb/811889中所述
  2. 删除以前存在于 SQL Server计算机帐户(而不是服务帐户)上的 SPN,使用

    setspn -D MSSQLSvc/HOSTNAME.domain.name.com:1234 HOSTNAME
    

    其中1234是实例使用的端口号(我的不是默认实例)。

于 2016-07-18T15:03:34.847 回答
5

这通常是由于缺少、不正确或重复的服务主体名称 (SPN)

解决步骤:

  1. 确认 SQL Server 正在使用的 AD 帐户
  2. 以管理员模式在 Powershell 或 CMD 中运行以下命令(服务帐户不应包含域)
setspn -L <ServiceAccountName> | Select-String <ServerName> | select line
  1. 确保返回的输出包含一个完全限定、非完全限定、有端口和没有端口的 SPN。

    预期输出:

    Registered ServicePrincipalNames for CN=<ServiceAccountName>,OU=CSN Service Accounts,DC=<Domain>,DC=com: 
    MSSQLSvc/<ServerName>.<domain>.com:1433
    MSSQLSvc/<ServerName>:1433                                           
    MSSQLSvc/<ServerName>.<domain>.com
    MSSQLSvc/<ServerName>
    
  2. 如果您没有看到以上所有内容,请在管理员模式下在 PowerShell 或 CMD 中运行以下命令(如果您不使用默认 1433,请确保更改端口)

SETSPN -S  MSSQLSvc/<ServerName> <Domain>\<ServiceAccountName> 
SETSPN -S  MSSQLSvc/<ServerName>.<Domain> <Domain>\<ServiceAccountName> 
SETSPN -S  MSSQLSvc/<ServerName>:1433 <Domain>\<ServiceAccountName> 
SETSPN -S  MSSQLSvc/<ServerName>.<Domain>:1433 <Domain>\<ServiceAccountName>
  1. 完成上述操作后,DNS 传播通常需要几分钟

此外,如果您收到有关发现重复 SPN 的消息,您可能需要删除它们并重新创建它们

于 2020-04-09T19:40:59.193 回答
4

检查客户端和服务器之间的时钟匹配。

当我间歇性地遇到这个错误时,上述答案都不起作用,然后我们发现我们的一些服务器上的时间已经漂移,一旦它们再次同步,错误就消失了。搜索 w32tm 或 NTP 以了解如何在 Windows 上自动同步时间。

于 2018-07-16T10:59:39.340 回答
4

我正在隔离网络中的 PC 集群上测试 IPv6,当我恢复 IPv4 时遇到了这个问题。我一直在活动目录、DNS 和 DHCP 中玩,所以不知道我是什么东西来破坏 Kerberos 设置的。

我使用这个有用的提示重新测试了我的软件外部的连接,以连接我发现的远程连接。

https://blogs.msdn.microsoft.com/steverac/2010/12/13/test-remote-sql-connectivity-easily/

然后在 Microsoft 网站 https://support.microsoft.com/en-gb/help/811889/how-to-troubleshoot-the-cannot-generate-sspi-context-error-message上进行简短搜索后发现此内容。

在 SQL 服务器上运行该工具,如果状态显示错误,则查看是否有任何问题,然后点击出现的修复按钮。

这为我解决了这个问题。

于 2018-12-05T12:13:27.637 回答
4

就我而言,重新启动 SQL Server 2014(在我的开发服务器上)解决了这个问题。

于 2018-09-28T13:54:21.120 回答
3

这个微软工具就像魔术一样。运行它,将它连接到 SQL 服务器,然后单击修复

此处链接的旧版本适用于 SQL Server 2017。

SQL Server 的 Kerberos 配置管理器 https://www.microsoft.com/en-us/download/details.aspx?id=39046

于 2019-09-19T00:23:32.470 回答
3

我在访问 Web 应用程序时遇到了这个问题。这可能是由于我最近更改了 Windows 密码。

当我更新了托管 Web 应用程序的应用程序池的密码后,此问题得到解决。

于 2017-07-21T17:04:32.380 回答
2

由于我在寻找自己问题的解决方案时来到这里,所以我将在这里分享我的解决方案,以防其他人也来到这里。

在我的机器被移动到另一个域的另一个办公室之前,我一直很好地连接到 SQL Server 。然后,在切换之后,我收到了关于目标主体名称的错误。修复它的是使用完全限定名称进行连接,例如:server.domain.com。实际上,一旦我以这种方式连接到第一台服务器,我就可以仅使用服务器名称(没有完整的限定)连接到其他服务器,但您的里程可能会有所不同。

于 2016-06-23T13:23:22.750 回答
2

我遇到了同样的问题,但是锁定和解锁机器对我有用。有时,防火墙问题会出错。

我不确定它是否适合您,只是分享我的经验。

于 2017-12-11T16:28:58.027 回答
2

如果有人想知道,我解开了 MS 术语:

Target = (active directory) target

Active directory target = target server running the domain controller

Domain controller = server that verifies your login information

Principal name = your windows username

SSPI = security support provider interface

Security support provider interface = software interface that manages "authenticated 
communications" and allows SSPs like TLS to allow SSL, among others

SSP = security support provider (SSPI implementation)

TLS/SSL = you should already know this
 

= 无法验证您的密码。

于 2020-06-26T21:26:29.537 回答
2

在我的情况下,我试图使用集成安全性在没有域的网络上从一台 PC 连接到另一台 PC 上的 SQL Server。在两台 PC 上,我都使用相同的 Microsoft 帐户登录 Windows。我在两台 PC 上切换到本地帐户,现在 SQL Server 连接成功。

于 2020-02-04T02:50:18.843 回答
1

这个问题的另一个利基是由网络连接引起的。我通过 Windows VPN 客户端连接,当我从 Wifi 切换到有线连接时弹出此问题。我的情况的解决方法是手动调整适配器指标。

在 powershell 中使用 Get-NetIPInterface 查看所有指标值。较低的数字是较低的成本,因此它们是 Windows 的首选。我切换了以太网和 VPN,并且凭据到达了 SSMS 满意所需的位置。

要配置自动度量功能: 在控制面板中,双击网络连接。右键单击网络接口,然后选择属性。单击 Internet 协议 (TCP/IP),然后选择属性。在常规选项卡上,选择高级。要指定度量标准,请在 IP 设置选项卡上选中以清除自动度量标准复选框,然后在接口度量标准字段中输入所需的度量标准。

来源: https ://docs.microsoft.com/en-us/troubleshoot/windows-server/networking/automatic-metric-for-ipv4-routes

于 2020-10-10T13:31:56.957 回答
1

我一直无法以令人满意的方式解决这个问题。如果我从客户端以本地 Windows 帐户登录,则 Windows 身份验证可以正常工作。但是,如果我尝试从 Microsoft 帐户登录(由于同步功能,这对我来说更可取),我会收到“不正确的主体”消息。MS-SQL 日志中没有出现登录失败的记录,这意味着失败发生的时间很早。

于 2021-09-15T06:34:21.247 回答
1

我试图在 Visual Studio 2015 控制台应用程序中从我的笔记本电脑连接到运行 SQL Server 2015 的 VM。我前一天晚上运行了我的应用程序,这很好。早上我尝试调试应用程序并收到此错误。我试过+ipconfig/flush和一堆其他垃圾,但最后......releaserenew

重新启动 VM 并重新启动客户端。那为我修好了。我应该知道,每次都重新启动。

于 2017-03-23T18:14:46.150 回答
1

我在我的 sql server 上遇到了这个问题。我 setspn -D mssqlsvc\Hostname.domainname Hostname 然后停止并启动了我的 SQL Server 服务。

我在想只要停止和启动我的 sql 服务就可以了。

于 2017-05-02T13:47:07.570 回答
1

我在这里尝试了所有的解决方案,但都没有奏效。一种有效的解决方法是单击Connect,输入服务器名称,选择选项,连接属性选项卡。将“网络协议”设置为“命名管道”。这允许用户使用他们的网络凭据进行远程连接。当我得到修复时,我会发布更新。

于 2018-05-02T17:11:45.227 回答
1

在我的案例中,自从我在我的开发环境中工作以来,有人关闭了域控制器并且无法验证 Windows 凭据。打开域控制器后,错误消失了,一切正常。

于 2020-02-21T20:01:53.327 回答
1

就我而言,问题是在 wifi 上设置 DNS。我删除了设置,将它们留空,然后开始工作。

Como ficou minha configuração do DNS

于 2019-01-15T09:43:35.430 回答
1

我为此遇到了一个新问题:SQL 2012 托管在 Server 2012 上。任务是为 SQL AlwaysOn 创建一个集群。
创建了集群,每个人都收到了 SSPI 消息。

要解决问题,请运行以下命令:

setspn -D MSSQLSvc/SERVER_FQNName:1433 DomainNamerunningSQLService

DomainNamerunningSQLService== 我为 SQL 设置的域帐户我需要域管理员来运行命令。集群中只有一台服务器出现问题。

然后重新启动SQL。令我惊讶的是,我能够连接。

于 2017-01-09T21:05:56.923 回答
1

确保从“SQL Server 配置管理器”启用“命名管道”。这对我有用。

  1. 打开“SQL Server 配置管理器”。
  2. 从左侧的列表中展开“SQL Server 网络配置”。
  3. 选择“[您的实例名称] 的协议”。
  4. 右键单击右侧列表中的“命名管道”。
  5. 选择“启用”
  6. 重新启动您的实例服务。
于 2019-04-12T13:08:31.060 回答
1

我今天遇到了这个并想分享我的修复,因为这个很容易被忽略并且很容易修复。

我们管理自己的 rDNS,最近重新修改了我们的服务器命名方案。作为其中的一部分,我们应该更新我们的 rDNS 而忘记了这样做。

ping 出现了正确的主机名,但 ping -a 返回了错误的主机名。

简单修复:更改 rDNS,执行 ipconfig /flushdns,等待 30 秒(我就是这样做的),再执行一次 ping -a ,看到它解析了正确的主机名,连接……获利。

于 2016-09-25T22:41:02.793 回答
0

我知道这个问题可能有各种不同的原因,在我的情况下,我的 Active Directory 用户帐户被锁定(当我登录到该主机 VM 时),注销然后解锁我的 AD 帐户解决了这个问题。希望这对其他人有帮助。

于 2022-01-21T16:25:36.820 回答
0

似乎问题与 DNS 服务器有关。要解决此问题,请将 IP 地址更改为 ComputerName。

示例:将值“10.0.0.10\TestDB”更改为“YourcomputerName\TestDB”

于 2018-05-23T12:21:42.073 回答
0

我在 SQL Server 2014 中遇到了同样的问题,我所要做的就是以管理员身份运行该应用程序。

于 2021-01-19T17:35:08.477 回答
0

我在使用面部识别登录 Windows 10 时遇到了同样的问题。解决方法是按住 shift 并右键单击 SSMS 并使用以不同用户身份运行并提供用户名和密码。

于 2020-12-02T02:44:22.697 回答
0

我遇到了这个问题,我花了大约 4-5 个小时来找到这个错误消息的根本原因。唯一的区别是,我在仅从 Visual Studio 连接数据库时遇到此错误,而不是直接通过 SQL Server Management Studio。

错误背后的原因是,我的应用程序托管在本地 IIS 上,一天前我更改了系统密码,但没有将其更新到托管应用程序的 IIS 应用程序池。

我去了 IIS,单击应用程序池,在池列表中右键单击相应的应用程序池,转到“高级设置”,选择“身份”并在“自定义帐户”下更改其值(域\帐户名和新密码),然后解决了我的问题。

谢谢

于 2020-02-26T14:01:09.050 回答
0

只有一个用户在一个 SQL Server 上收到此错误。原来他在控制面板中存储了一个旧密码 - 凭据管理器在 Windows 凭据下的服务器名称。删除了存储的凭据并且它起作用了。

于 2019-01-16T19:38:05.917 回答
0

我遇到过同样的问题。我最近更改了我的 Windows 密码,但我的网站抛出了错误。我尝试注销并登录,但没有成功。然后我意识到我defaultappppol在“自定义帐户”部分使用我的帐户配置了我的帐户,并使用新密码再次配置了该帐户。这做了魔术!请让我知道您对此解决方案的反馈。

于 2018-04-24T14:06:28.310 回答
0

我的问题原来如此奇怪和简单:

  • ServerA 上的 SQL Server Windows 服务(配置为使用 DOMAIN\svcAccountA 运行)
  • ServerB 上的 SQL Server Windows 服务(配置为使用 DOMAIN\svcAccountB 运行)

DOMAIN\svcAccountA 和 DOMAIN\svcAccountB 都是我们 Active Directory 域中的服务帐户。

即使 DOMAIN\svcAccountA 连接到 ServerB 的所有权限都已正确设置,ServerA 上的 C# CLR(以 DOMAIN\svcAccountA 运行)无法再使用 SqlConnection 连接到 ServerB(同样奇怪的无信息错误消息:目标主体名称不正确. 无法生成 SSPI 上下文)。

最简单的部分?重新启动 ServerA 后,SQL Server Windows 服务将不再自动启动!这是发现有人更改了 DOMAIN\svcAccountA 密码的线索,我必须在此处更正 SQL Server Windows 服务配置:

在此处输入图像描述

更正密码后,ServerA 上的 SQL Server Windows 服务正常启动,ServerA 上的 C# CLR(以 DOMAIN\svcAccountA 运行)现在可以使用 SqlConnection 连接到 ServerB。

于 2019-10-02T15:32:36.203 回答
0

在 SQL Server 防火墙中,为入站和出站打开端口 1433、4022、135、1434。对我来说就像魔术一样工作。

于 2020-07-27T04:34:25.590 回答
0

我正在运行基于 SQL.COM 的 Mickey Mouse 测试系统。

setspn -T sql -F -Q */Servername我在无法连接的机器和可以连接的机器上运行(在本例中为 SQL01)。然后我简单地删除了问题机器中的其他条目,它都起作用了,例如setspn -D MSSQLSvc/SQL01.SQL.COM:1433 SQL01

于 2018-05-22T14:18:43.930 回答
0

我遇到了这个问题的一个变种,以下是特征:

  • 用户能够成功连接到命名实例,例如,连接Server\Instance成功
  • 用户无法连接到默认实例,例如,Server使用 OP 关于 SSPI 的屏幕截图连接失败
  • 用户无法使用完全限定名称连接默认实例,例如,连接Server.domain.com失败(超时)
  • 用户无法在没有命名实例的情况下连接 IP 地址,例如连接192.168.1.134失败
  • 不在域中的其他用户(例如,通过 VPN 连接到网络的用户)但使用域凭据能够成功连接到默认实例和 IP 地址

因此,在尝试找出为什么这个单一用户无法连接的许多头痛之后,我们采取了以下步骤来解决这种情况:

  1. 使用 a 查看 SPN 列表中的服务器
    setspn -l Server
    。在我们的例子中,它说Server.domain.com
  2. 向位于C:\Windows\System32\drivers\etc\hosts(以管理员身份运行记事本以更改此文件)中的主机文件添加一个条目。我们添加的条目是
    Server.domain.com Server

在此之后,我们能够通过 SSMS 成功连接到默认实例。

于 2016-12-07T19:39:26.707 回答
0

我在更改 SQL Server 服务用户时遇到了这个问题。当它发生在主实例上时,由于 SPN 未更新,以下第 1 点和第 2 点修复了问题。

当我更改命名实例服务用户时,我也遇到了这个问题。此新用户是主实例已在使用的域帐户。我不知道出了什么问题,但我以这种方式修复了它:

  1. 我按照上述建议(请参阅以前的线程)运行Microsoft® Kerberos Configuration Manager for SQL Server®
  2. 该工具发现了一些问题并为我修复了它们
  3. 该工具建议在命名实例上启用动态端口不是一个好主意,因此我运行了我的 sql server 配置管理器并:
  4. 将命名实例配置为使用静态端口(只要可用,编号并不重要)。配置路径:命名实例的协议,右键单击 TCP/IP,属性,IP 地址,清除所有 TCP 动态端口内容,将您选择的端口号设置为所有 TCP 端口属性。
  5. 创建了一个别名:sql native client configuration -> aliases -> new alias。server是你的数据库服务器名,端口就是上面提到的那个,我选择的别名和没有服务器名的实例名一样(eg server1\sqlsrv2017: server = server1, alias = sqlsrv2017)
  6. 按照提示重启实例服务

不用说必须使用防火墙清除端口,如果启用此功能

于 2020-10-20T17:45:03.560 回答
0

在使用 Windows 身份验证登录时,我在 SQL Server 2014 上也遇到了这个问题,为了解决我重新启动服务器一次然后尝试登录的问题,它对我有用。

于 2017-06-27T08:30:45.787 回答
0

我在加入域的 Windows 10 机器上尝试通过 L2TP VPN 连接到我的 SQL Server 2017 实例时遇到了这个问题。

问题最终出在我的 VPN 设置中。在安全设置中,在身份验证中,使用 EAP-MSCHAPv2 和属性对话框中,我选择了Automatically use my Windows logon name and password (and domain if any).

关闭选项的位置

我将其关闭,然后重新连接我的 VPN,然后我就能够成功连接到 SQL Server。

我相信这导致我的 SQL 登录(具有 Windows 帐户安全性)使用 Kerberos 而不是 NTLM,从而导致 SSPI 错误。

于 2019-02-12T18:24:14.917 回答
0

根本不是一个理想的解决方案,我只是想添加它以供看到此页面的任何人将来参考:

我在尝试使用我的域帐户连接到远程 SQL Server 实例时遇到了这个问题,在另一台机器上托管的实例上尝试同样的事情工作正常。

因此,如果您可以选择只使用不同的实例,它可能会有所帮助,但这实际上并不能解决任何问题。

于 2018-08-30T14:55:18.580 回答
0

连接字符串中的数据库不存在。我认为它是,但它还没有被创建。

于 2021-02-23T05:36:19.573 回答
0

我将在此处添加此内容,因为它使我感到困惑并可能对其他人有所帮助。警告购买者,我不是 Windows 人,但不得不看一个包含 SQL Server 的场景。

我下载了完整 SQL Server 产品的开发人员版本,并将其安装在 Windows 10 上。对于本地连接来说一切都很好,对于远程客户端则没有。

尝试了上述许多方法,但最终我发现 Windows 身份验证想要对 remoteclient\myuser 进行身份验证,并且在独立的 Windows 世界中无法创建一种机制来进行身份验证(据我所知,它是 kerberos)。错误消息是“无法生成 SSPI 上下文”。

使用 SQL 身份验证似乎也不起作用。

我最终回到了具有组合模式的 SQL Server Express,然后我可以从远程客户端使用 SQL 身份验证。

于 2018-11-23T09:13:25.207 回答
0

我找到了, Michael Hotek在这篇 MSDN 帖子中回答了它。

如果 SQL Server 配置为仅用于 Windows 身份验证,则连接到它的唯一方法是使用您的域凭据。由于您的笔记本电脑上没有域凭据,因此您将无法连接。如果要使用 SQL Server 登录名进行连接,则需要将实例的安全模型更改为 Windows 和 SQL Server 身份验证。然后,您将能够使用标准 SQL Server 登录而不是您的域凭据。如果这不可能,那么一个非常简单的解决方法是 VPN 进入办公室,然后 RDP 进入安装了 SQL Server 工具的机器。然后,您将使用您的凭据登录到域,并且可以直接从您 RDP 进入的机器上使用这些工具。

事实证明,Mixed mode Auth如果您不在域中,则必须使用。

于 2021-03-23T21:40:51.373 回答
-2

请在 SQL Server Management Studio 中检查提到的登录名的权限,使其 sysadmin 复选框打勾,然后Integrated Security=False在 .config 文件中进行。

在客户端机器上触发 2 个命令

  1. ipconfig /flushdns

  2. klist 清除。

在客户端计算机上安装 kerbarose 配置管理器。

最后,重新启动客户端机器和主要的 SQL 服务器服务。在客户端机器上运行应用程序。这 100% 正确。

于 2017-11-10T09:23:47.217 回答
-4

Integrated Security=false

webconfig在连接字符串中将此标志设为假。它会起作用的!

于 2017-07-07T16:51:10.567 回答