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

时间:2015-08-07 08:49:31

标签: sql-server database-connection kerberos integrated-security

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

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

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

错误是:

  

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

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

这是连接字符串:

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

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

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

2 个答案:

答案 0 :(得分:0)

参考以下网址

Troubleshooting: Connection Forcibly Closed

TCP Provider, error:

connection was forcibly closed

请按照以下步骤操作

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

  2. 打开SQL Server配置管理器

  3. 转到MSSQLSERVER的协议
  4. 启用所有协议
  5. 转到SQL Native Client
  6. 选择客户端协议并启用全部
  7. 重新启动SQL Server服务。
  8. 使用..(.NET Framework数据提供程序用于SQL Server)作为提供程序

    的ConnectionString

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

答案 1 :(得分:0)

正如我所料,这是 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\MaxTokenSize REG_DWORD类型中添加一个键到十进制 65535 )。
然后我重新启动了服务器。

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