0

我有两台 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;

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

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

4

2 回答 2

0

参考以下网址

故障排除:连接被强制关闭

TCP 提供程序,错误:

连接被强行关闭

跟着这些步骤

  1. 首先转到服务并检查“SQL Server Browser”服务是否启动,如果没有启动该服务。

  2. 打开 SQL Server 配置管理器

  3. MSSQLSERVER 的 Goto 协议
  4. 启用所有协议
  5. 转到 SQL 本机客户端
  6. 选择客户端协议并启用所有
  7. 重新启动 SQL Server 服务。

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

连接字符串

  1. Data Source=server\instance;Initial Catalog=;Persist Security Info=True;User ID=;Password=;Network Library=dbmssocn
于 2015-08-07T08:58:27.783 回答
0

正如我所料,这是Kerberos 身份验证的问题,因为我的用户有太多 AD 安全组......解决方案在这里解释:当用户属于多个组时 Kerberos 身份验证问题, 这里是MaxTokenSize 和 Windows 8 和 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\MaxTokenSize键入REG_DWORD十进制65535
然后我重新启动了服务器。

我的用户现在可以毫无错误地访问数据。

于 2015-08-07T14:41:42.477 回答