SQL Server 2012 - Integrated Security 的远程连接问题
SQL Server 2012 - Distant connection issues with Integrated Security
我有两台 SQL 服务器:一台在法国第戎;一个在美国科罗拉多州阿瓦达。它们之间已经建立了数据复制。
当用户尝试连接到 SQL Server 2008 R2 Dijon 数据库时一切正常。
但是当我的一个用户试图从 VB.Net 应用程序连接到 SQL Server 2012 US 数据库时发生错误。
错误是:
"A connection was successfully established with the server, but then an error occurred during the login process (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)"
此错误仅针对一位用户显示。其他人可以毫无问题地连接。我可能对此有所了解。 我们已经遇到了他的连接问题,因为他属于许多 AD 安全组。
这是连接字符串:
Data Source=server\instance;Initial Catalog=db;Integrated Security=SSPI;Connection Timeout=0;
对于试图连接到同一服务器的美国用户,我们遇到了同样的问题。但当他试图连接到第戎时却没有。你有什么线索可以帮助我解决这个问题吗?
我检查了 Whosebug 线程和网络上的其他解决方案,但没有任何帮助...
参考以下网址
Troubleshooting: Connection Forcibly Closed
connection was forcibly closed
按照以下步骤操作
首先进入服务查看'SQL Server Browser'服务是否启动,如果没有启动
打开SQL服务器配置管理器
- 转到 MS 协议SQL服务器
- 启用所有协议
- 转到 SQL 本机客户端
- Select 客户端协议和全部启用
- 重新启动 SQL 服务器服务。
使用 ..(SQL 服务器的 .NET Framework 数据提供程序)作为提供程序
连接字符串
- 数据源=server\instance;初始目录=;持久安全信息=True;用户 ID=;密码=;网络库=dbmssocn
如我所料,这是 Kerberos 身份验证 的问题,因为我的用户有太多的 AD 安全组...
解决方案在这里解释:Problems with Kerberos authentication when a user belongs to many groups and here MaxTokenSize and Windows 8 and Windows Server 2012
If the authorization data for a user attempting to authenticate is larger than the MaxTokenSize, then the authentication fails for that connection using that protocol.
在 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
type 到 decimal 值65535).
然后我重新启动了服务器。
我的用户现在可以无错误地访问数据。
我有两台 SQL 服务器:一台在法国第戎;一个在美国科罗拉多州阿瓦达。它们之间已经建立了数据复制。
当用户尝试连接到 SQL Server 2008 R2 Dijon 数据库时一切正常。
但是当我的一个用户试图从 VB.Net 应用程序连接到 SQL Server 2012 US 数据库时发生错误。
错误是:
"A connection was successfully established with the server, but then an error occurred during the login process (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)"
此错误仅针对一位用户显示。其他人可以毫无问题地连接。我可能对此有所了解。 我们已经遇到了他的连接问题,因为他属于许多 AD 安全组。
这是连接字符串:
Data Source=server\instance;Initial Catalog=db;Integrated Security=SSPI;Connection Timeout=0;
对于试图连接到同一服务器的美国用户,我们遇到了同样的问题。但当他试图连接到第戎时却没有。你有什么线索可以帮助我解决这个问题吗?
我检查了 Whosebug 线程和网络上的其他解决方案,但没有任何帮助...
参考以下网址
Troubleshooting: Connection Forcibly Closed
connection was forcibly closed
按照以下步骤操作
首先进入服务查看'SQL Server Browser'服务是否启动,如果没有启动
打开SQL服务器配置管理器
- 转到 MS 协议SQL服务器
- 启用所有协议
- 转到 SQL 本机客户端
- Select 客户端协议和全部启用
- 重新启动 SQL 服务器服务。
使用 ..(SQL 服务器的 .NET Framework 数据提供程序)作为提供程序
连接字符串
- 数据源=server\instance;初始目录=;持久安全信息=True;用户 ID=;密码=;网络库=dbmssocn
如我所料,这是 Kerberos 身份验证 的问题,因为我的用户有太多的 AD 安全组... 解决方案在这里解释:Problems with Kerberos authentication when a user belongs to many groups and here MaxTokenSize and Windows 8 and Windows Server 2012
If the authorization data for a user attempting to authenticate is larger than the MaxTokenSize, then the authentication fails for that connection using that protocol.
在 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
type 到 decimal 值65535).
然后我重新启动了服务器。
我的用户现在可以无错误地访问数据。