SQL Server 2012 - 集成安全性的远程连接问题

Posted

技术标签:

【中文标题】SQL Server 2012 - 集成安全性的远程连接问题【英文标题】:SQL Server 2012 - Distant connection issues with Integrated Security 【发布时间】:2015-08-07 08:49:30 【问题描述】:

我有两台 SQL Server:一台在法国第戎;一个在美国科罗拉多州阿瓦达。他们之间已经建立了数据复制。

当用户尝试连接到 SQL Server 2008 R2 第戎数据库时,一切正常。

但是当我的一个用户尝试从 VB.Net 应用程序连接到 SQL Server 2012 US 数据库时发生错误。

错误是:

“与服务器建立连接成功,但随后在登录过程中出错(提供者:TCP Provider,错误:0 - 现有连接被远程主机强行关闭。)”

此错误仅针对一位用户显示。其他人可以毫无问题地连接。我可能对此有所了解。 我们已经遇到了他的连接问题,因为他属于许多 AD 安全组

这是连接字符串:

Data Source=server\instance;Initial Catalog=db;Integrated Security=SSPI;Connection Timeout=0;

对于尝试连接到同一台服务器的美国用户,我们遇到了同样的问题。但不是当他试图连接到第戎时。你有什么线索可以帮助我解决这个问题吗?

我从网上检查了 *** 线程和其他解决方案,但没有任何帮助...

【问题讨论】:

【参考方案1】:

参考以下网址

Troubleshooting: Connection Forcibly Closed

TCP Provider, error:

connection was forcibly closed

按照这些步骤操作

    首先转到服务并检查'SQL Server Browser'服务是否启动,如果没有启动服务。

    打开 SQL Server 配置管理器

    MSSQLSERVER 的转到协议 启用所有协议 转到 SQL 本机客户端 选择客户端协议并启用所有 重新启动 SQL Server 服务。

使用 ..(用于 SQL Server 的 .NET Framework 数据提供程序)作为提供程序

连接字符串

    Data Source=server\instance;Initial Catalog=;Persist Security Info=True;User ID=;Password=;Network Library=dbmssocn

【讨论】:

感谢您的回答。我已经检查了这些解决方案。但这对我不起作用。不要忘记这个问题只发生在少数用户身上。而对于其他人来说,一切都很好。 从 1 到 7 点都可以。我在ConnectionString 中添加了网络库,但此错误消息仍然出现。我将 Integrated Security 用于基于 AD 的安全性。我没有创建任何 SQL 用户(当然除了 sa)【参考方案2】:

正如我所料,这是 Kerberos 身份验证的问题,因为我的用户有太多 AD 安全组... 解决方案在这里解释:Problems with Kerberos authentication when a user belongs to many groups 和这里MaxTokenSize and Windows 8 and Windows Server 2012

如果尝试进行身份验证的用户的授权数据大于 MaxTokenSize,则使用该协议的该连接的身份验证失败。

在 Windows 7 和 Windows Server 2008R2 上,MaxTokenSize(Kerberos 的默认缓冲区大小)为 12k。在 Windows 8 和 Windows Server 2012 中,其大小已增加到 48k。这对我来说还不够。

我必须在注册表中添加一个键 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\MaxTokenSizeREG_DWORD 类型十进制65535)。 然后我重新启动了服务器。

我的用户现在可以正确访问数据了。

【讨论】:

以上是关于SQL Server 2012 - 集成安全性的远程连接问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL Server 2008 集成安全性

SQL Server 2012 官方版 / SQL Server 2012下载

sqlserver2012不带登录名的用户

SQL Server 集成安全性(Windows 身份验证)

具有 SQL Server 集成安全性的 Flyway

PHP PDO 连接到具有集成安全性的 SQL Server?