0

У меня есть два SQL-сервера: один в Дижоне, Франция; один в Арваде, штат Колорадо, США. Между ними была установлена ​​репликация данных.SQL Server 2012 - Проблемы удаленного подключения с интегрированной безопасностью

Все работает нормально, когда пользователи пытаются подключиться к базе данных SQL Server 2008 R2 Dijon.

BUT Ошибка возникает, когда один из моих пользователей пытается подключиться к базе данных SQL Server 2012 США из приложения VB.Net.

Ошибка:

"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; 

У нас есть один и тот же вопрос для пользователей США пытается подключиться к одному серверу. Но не тогда, когда он пытается подключиться к Дижон. У вас есть какая-то подсказка, которая могла бы помочь мне решить эту проблему, пожалуйста?

Я проверил StackOverflow нити и другие решения из Интернета, но ничего не помогло мне ...

ответ

0

Это было, как я ожидал, проблема аутентификации Kerberos, потому что мой пользователь имеет слишком много групп безопасности AD ... решение объясняется здесь: Problems with Kerberos authentication when a user belongs to many groups и здесь 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 типа к значению десятичной).
Затем я перезагрузил сервер.

Теперь мой пользователь может получить доступ к данным без ошибок.

0

Обратитесь по следующим адресам

Troubleshooting: Connection Forcibly Closed

TCP Provider, error:

connection was forcibly closed

Follow эти этапы

  1. Сначала перейдите в сервисы и проверьте, запущена ли служба «SQL Server Browser», если не запущена служба.

  2. Open SQL Диспетчер конфигурации сервера

  3. Goto Протоколы для MSSQLSERVER
  4. Включить все протоколы
  5. Goto SQL Native Client
  6. Выберите протоколы клиента и и Включить все
  7. перезапустить службы SQL Server.

использование .. (.NET Provider Framework данных для SQL Server) в качестве поставщика

ConnectionString

  1. Источник = сервер данных \ экземпляр; Initial Catalog =; Упорство Security Info = True; ID пользователя =; Password =; Сеть Библиотека = dbmssocn
+0

Спасибо за ваш ответ. Я уже проверял эти решения. Но это не работает для меня. Не забывайте, что эта проблема возникает только для немногих пользователей. И для остальных все идет хорошо. – KrasshX

+0

Для получения дополнительной информации (https://www.connectionstrings.com/sql-server-2012/) –

+0

Баллы с 1 по 7 были в порядке. Я добавил сетевую библиотеку в свой «ConnectionString», но это сообщение об ошибке все еще идет. Я использую «Интегрированную безопасность» для безопасности на основе AD. У меня нет каких-либо SQL-пользователей, созданных (за исключением, конечно, – KrasshX

Смежные вопросы