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\MaxTokenSize
(REG_DWORD
类型 到 十进制 值 65535)。
然后我重新启动了服务器。
我的用户现在可以正确访问数据了。
【讨论】:
以上是关于SQL Server 2012 - 集成安全性的远程连接问题的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server 2012 官方版 / SQL Server 2012下载