我有两个SQL服务器:一个在法国的Dijon;一个在美国科罗拉多州的Arvada。它们之间已经建立了数据复制。
当用户试图连接到Server 2008 R2 Dijon数据库时,一切正常。
但是,当我的一个用户试图从VB.Net应用程序连接到Server 2012美国数据库时,会发生错误。
错误是:
“成功地与服务器建立了连接,但是在登录过程中发生了错误(provider: TCP Provider,error: 0--现有连接被远程主机强制关闭)。”
此错误仅为一个用户显示。其他的可以连接,没有任何问题。我也许对此有个线索。我们已经为他遇到了连接问题,因为他属于许多AD安全组。
下面是连接字符串:
Data Source=server\instance;Initial Catalog=db;Integrated Security=SSPI;Connection Timeout=0;对于试图连接到同一台服务器的美国用户,我们也有同样的问题。但当他试图连接到Dijon的时候就不是了。你有什么线索能帮我解决这个问题吗?
我检查了StackOverflow线程和网络上的其他解决方案,但是没有任何帮助.
发布于 2015-08-07 14:41:42
如我所料,这是Kerberos身份验证的一个问题,因为我的用户有太多的AD安全组.解决方案在这里解释:当用户属于许多组时,Kerberos身份验证的问题和这里的MaxTokenSize和Windows8和Windows 2012
如果试图进行身份验证的用户的授权数据大于MaxTokenSize,则使用该协议对该连接进行身份验证失败。
在Windows7和WindowsServer2008R2上,MaxTokenSize (Kerberos的默认缓冲区大小)是12k。它的大小在Windows8和Windows 2012中已经增加到48k。对我的案子来说还不够。
我必须在注册表(REG_DWORD 类型中添加一个键到十进制值65535)。
然后我重新启动了服务器。
我的用户现在可以毫无错误地访问数据。
发布于 2015-08-07 08:58:27
请参阅以下URL
TCP提供程序,错误:
连接被强行关闭
遵循以下步骤
使用..。(Server的.NET框架数据提供程序)作为提供程序
连接串
https://stackoverflow.com/questions/31873459
复制相似问题