Подтвердить что ты не робот

Невозможно создать контекст SSPI

Я работаю над .NET-приложением, где я пытаюсь создать сценарии базы данных. При создании проекта я получаю сообщение об ошибке "Невозможно создать контекст SSPI". Эта ошибка отображается в окне вывода (внутри экрана VS2008), и процесс сборки завершился неудачно. Пожалуйста, помогите по этому поводу. SQL Server настроен на работу с проверкой подлинности Windows и работает как сетевой сервис (эти две вещи необходимы для моего проекта).

Пожалуйста, помогите в этом. Эта ошибка не кажется последовательной. Это было исправлено в прошлом, перезагрузив машину, изменив системное время, чтобы соответствовать времени домена и некоторым предложениям в сети. Пожалуйста, помогите по этому поводу.

4b9b3361

Ответ 1

Это довольно распространенная ошибка с множеством причин: начните здесь с KB 811889

  • Какая версия SQL Server?
  • И Windows на клиенте и сервере?
  • Локальный или сетевой экземпляр SQL?
  • Домен или рабочая группа? Provider?
  • Изменение пароля
  • Локальные ошибки журналов Windows
  • Любые другие приложения затронуты?

Ответ 2

Похоже, что ваш компьютер не связался с контроллером домена для проверки подлинности на некоторое время. (Раньше это случалось на моем ноутбуке несколько раз.)

Это также может произойти, если ваш пароль истекает.

Ответ 3

У меня была такая же проблема после изменения пользователя, который запускал службу MSSQLSERVER-Service

Чтобы решить неправильные SPN с SQL Server, я использовал этот инструмент

http://www.microsoft.com/en-us/download/details.aspx?id=39046 - Microsoft® Kerberos Configuration Manager для SQL Server

В моем случае это сработало довольно хорошо.

Ответ 4

Эта ошибка обычно возникает, когда истек срок действия учетной записи пользователя Windows, и он уже вошел в систему со старым паролем. Просто попросите пользователя перезагрузить его машину и проверить, истек ли пароль, или он изменил пароль.  Надеюсь, это поможет!!!!!

Ответ 5

Первое, что вам нужно сделать, это войти в журналы (Management\SQL Server Logs) и посмотреть, есть ли SQL Server successfully registered the Service Principal Name (SPN). Если вы видите какую-то ошибку (The SQL Server Network Interface library could not register the Service Principal Name (SPN) for the SQL Server service), то знаете, с чего начать.

Мы видели, что это произошло, когда мы изменили учетную запись, с которой работал SQL Server. Сброс его на локальную системную учетную запись разрешил проблему. Microsoft также имеет руководство для ручной настройки SPN.

Ответ 6

Я разрешил свою ошибку Cannot Generate SSPI Context с помощью диспетчера конфигурации SQL Server. Поскольку у меня есть собственный клиент SQL Server 10.0 на моей машине, соединение с сервером пытается использовать именованные каналы (или разделяемую память?). Другие машины могут запускать мое приложение без проблем. Когда я посмотрел на менеджера конфигурации, именованные каналы и общая память были включены (хорошо). Однако под псевдонимом имя компьютера было там с принудительным TCP. Поскольку я не знал, какое влияние будет иметь изменение, я изменил строку подключения в своей программе, чтобы вместо этого использовать <servername> . <domainname> . Фиксированный.

Ответ 7

Если вы размещаете в IIS, убедитесь, что пароль для учетной записи AppPool не изменился.

Если это так, выполните следующие действия:

  • Перейдите в IIS
  • Нажмите "Пулы приложений"
  • Выберите AppPool для вашего приложения
  • Щелкните правой кнопкой мыши на своем AppPool
  • Дополнительные настройки
  • Идентичность
  • Обновить пароль
  • Перезапустить AppPool

Ответ 8

Ошибка "Не удается создать контекст SSPI" является очень общей и может произойти по множеству причин. Это всего лишь ошибка обложки для любой ошибки Kerberos/NTLM. Ссылка на статью Gbn KB является очень хорошей отправной точкой и обычно решает проблемы. Если у вас все еще есть проблемы, я рекомендую выполнить шаги по устранению неполадок в Устранение ошибок Kerberos.

Ответ 9

Я также выпустил эту проблему, и администраторы сервера решили ее, выполнив то же решение, что и indu_teja, предложенное в http://www.sqlservercentral.com/Forums/Topic546566-146-1.aspx

Решение, предложенное indu_teja, говорит:

Если вы получите эту "Контекстную ошибку SSPI". Проблемы, с которыми мы сталкиваемся:

  • Мы не сможем подключиться к SQL Server удаленно.
  • Однако мы сможем подключиться к серверу с локальной учетной записью.

ПРИЧИНА: проблема может быть вызвана отсутствием надлежащей синхронизации для SPN в Active Directory.

Решение:

  • Вам нужно reset SPN. Используйте синтаксис "SET SPN". Вы можете проверить синтаксис в сети один раз.
  • Смените учетную запись службы sql-сервера из учетной записи домена на локальную учетную запись, повторно утилизируйте sql, а затем reset снова с учетной записью домена и перезагрузите SQL-сервер.

Ответ 10

У меня была одна и та же проблема, и все, что я делал, это удалить учетные данные пользователя в учетных данных на сервере sql, используя другой идентификатор пользователя и добавить их обратно.

Ответ 11

Вот мой случай. У меня была удаленная машина, на которой размещался SQL Server. С моей локальной машины я пытался получить доступ к экземпляру SQL через некоторый код С#, и я получал эту ошибку. Мой пароль для учетной записи пользователя на моем компьютере/домене имел expired. Я исправил его следующим образом:

  • Открыл удаленный компьютер, в котором мне было предложено изменить пароль.
  • Я изменил свой пароль в этом приглашении и вошел в удаленную машину.
  • Я "заблокировал" свою локальную машину (используя windows + L), поэтому мне не пришлось полностью подписываться), чтобы я мог вернуться на страницу входа
  • Я подписался на свою локальную машину с новым паролем

Все работало нормально.

Ответ 12

В моем случае это был отсутствующий SPN, пришлось запускать эти две команды:

setspn -a MSSQLSvc: SERVERNAME SERVERNAME setspn -a MSSQLSvc: SERVERNAME: 1433 SERVERNAME

Другими словами, в моем случае у меня было полное доменное имя уже правильно, но не только имя NETBIOS, но после добавления они работали нормально. Ну, изначально это было не так, но после ожидания 2 минуты это было сделано.

Ответ 13

У меня была эта ошибка - это произошло, потому что мой пароль истек, и мне пришлось его изменить. Я этого не заметил, потому что в некоторых программах я все равно мог войти в систему, и все будет работать нормально (включая окна), но я не мог войти на серверы sql.

Ответ 14

Возможно, вы использовали Integrated Security = SSPI в строке подключения. SSPI используется для доверенных соединений с использованием Windows Authentication.hence, чтобы правильно работать в Windows-аутентификации, либо ваша система и сервер базы данных должны быть в одном домене и использовать один и тот же адрес DNS-сервера, либо должны находиться в доверенном домене.

если ваша система и сервер базы данных находятся в одном домене, проверьте адрес DNS-сервера свойств IPV4 в сетевом подключении вашей системы и укажите тот же DNS-сервер, который используется сервером базы данных.

Ответ 15

В vb.net, если вы используете связанный сервер, проверьте строку подключения. Комплексная безопасность = правда; не работает во всех провайдерах SQL, он генерирует исключение при использовании с провайдером OleDb. Так что в основном Интегрированная безопасность = SSPI; является предпочтительным, поскольку работает как с SQLClient, так и с OleDB. Если вы по-прежнему сталкиваетесь с ошибкой, полностью удалите синтаксис.

Ответ 16

Я могу решить эту проблему, сбросив домен (серверный сервер, который является сервером домена, но не связан с SQL Server, кроме управления доменом), за которым следуют клиентские машины.

Спасибо всем за вашу немедленную поддержку!

Ответ 17

Был действительно странный пример этого; Все веб-продукты, у которых были строки подключения, содержащие имя компьютера Windows на сервере SQL, отлично работали, но продукты, у которых было полное доменное имя с внутренним доменом, дали ошибку SSPI. то есть ИМЯ КОМПЬЮТЕРА против COMPUTERNAME.DOMAIN(ping всегда работал, как ожидалось)

Это ТОЛЬКО задавало проблемы при использовании нового SQL-сервера, и файлы hosts указывали как имя компьютера, так и имя_компьютера как полное доменное имя для строк подключения.

Решение в этом случае состояло в том, чтобы установить все строки подключения только на имя компьютера, удалив ссылки на домен.

SQL: 2008R2 SQL2012

IIS: 2008R2

Ответ 18

Я нашел простое решение этой проблемы. Просто создайте запись в клиенте, с которой вы столкнулись с проблемой. откройте файл hosts в windows\system32\drivers\etc, теперь в конце текста напишите внутренний ip-адрес сервера, за которым следует полное имя компьютера сервера. например: 192.168.1.3 server1.abc.com

Ответ 19

У нас была эта проблема в тех случаях, когда мы меняли пользователя службы с Domain1\ServiceUser на Domain2\ServiceUser. SPN остаются зарегистрированными в Domain1\ServiceUser и никогда не регистрируются в Domain2\ServiceUser. Мы зарегистрировали имена участников-служб в Domain2\ServiceUser, но проблема осталась. Затем мы удалили имена участников-служб в Domain1\ServiceUser, и проблема была решена.

Ответ 20

Если вы выполняете код, не написанный на вашем компьютере, который запускается на компьютере, используемом вашим рабочим партнером, но не на вашем, проверьте файл web.config. Может быть, в каком-то месте должно быть пустое имя вашего коллеги под именем userPrincipalName. Это происходит автоматически, когда мы создаем сервисную ссылку на проект в VS.