Microsoft odbc sql server driver не удается создать контекст sspi
Когда кто-то пытается подключиться к экземпляру SQL Server, появляется ошибка:
Невозможно сгенерировать контекст SSPI.
Вчера у нас было отключение (я не знаю, как сказать это выражение на английском), и мне пришлось закрыть наши серверы.
Ища ответы, я нашел это:
Но это не помогает мне, потому что они работают нормально до вчерашнего дня. Я не хочу ничего менять. Но если придется, я это поменяю.
Obs: Я не могу перезапустить сервер сейчас.
Изменить: так как я мой ответ, у нас не было никаких ошибок.
Я не могу перезапустить сервер, у нас более 500 пользователей онлайн. Я действительно не могу понять, что делать. Там нет ничего полезного в Интернете. Настройте групповую политику с самого сервера, чтобы автоматически изменять время для пользователей. Если вы не хотите перезагружать сервер, чтобы применить изменения в групповой политике, которую вы можете использовать gpupdate /force . Подробнее об этой прекрасной теме здесь. Но я очень рекомендую передать это задание менеджеру сервера.«Невозможно сгенерировать контекст SSPI» - общая ошибка. Это может быть вызвано многими проблемами, такими как отключенный пароль, смещение тактовой частоты, разрешения доступа к Active Directory, сбой регистрации имени участника-службы и т. Д. И т. Д.
Нет решения этой проблемы. Единственное «решение» - это выяснить причину, согласно KB811889 и / или Устранению ошибок Kerberos . Применение того или иного решения из случайных интернет-ресурсов, без понимания причины, может или не может решить проблему, может или не может вызвать разочарование, может или не может нанести безвозвратный ущерб.
Ответ-> Применение того или иного решения из случайных интернет-ресурсов, без понимания причины, может или не может решить проблему, может или не может вызвать разочарование, может или не может нанести безвозвратный ущерб. Ответ -> «Мы изменили пользователя SQL SERVICE на« Администратор домена »». -ооооо-каай тогда.Мы изменили на SQL SERVICE user тот, который " Domain Admin ".
Я провел несколько исследований, чтобы понять, почему это происходит. В нем говорится, что когда вы закрываете службу, вам нужна учетная запись с привилегиями, создающая новое имя участника-службы (при повторном включении). Если вы запустите службу без нее, она отобразится в НЕВОЗМОЖНО СОЗДАТЬ КОНТЕКСТ SSPI.
мы меняем привилегии нашей системной учетной записи.
Надеюсь, это кому-нибудь поможет.
Хорошая практика для служебных учетных записей - предоставлять им как можно меньше привилегий. Предоставление вашей учетной записи администратора домена службы противоположно этому подходу - я настоятельно рекомендую не делать этого с точки зрения безопасности.У нас возникла эта проблема после того, как мы взяли базу данных у PROD и восстановили ее в QA. Наше приложение называло три базы данных на трех серверах, и, кроме того, не было сложным.
Оказывается, поддельное имя участника-службы (SPN) мешало учетной записи службы, под которой должно было выполняться соединение. Мы обнаружили это с помощью Program Files> Microsoft Kerberos Config Manager.
Краткосрочным решением было использование диспетчера конфигурации SQL Server и изменение подключений SQL Server и агента SQL Server с учетной записи службы на «LocalSystem» в разделе «Использовать встроенную учетную запись».
Невозможно сгенерировать контекст SSPI, это может означать именно это. Когда клиент подключается к серверу SQL, он использует метод генерации, который включает полное доменное имя (MsSQLsvr) и порт сервера. Он использует DNS для генерации имени сервера, поэтому, если он разрешает имя неправильно из-за имен CNAME, файла хоста и т. Д., Генерация завершится неудачно. Пингуйте нужный сервер и посмотрите, какой ответ вы получите. Если это не полное доменное имя SQL-сервера, тогда SPN будет сгенерирован неправильно, вызывая эту ошибку.
В некоторых ситуациях вы получите эту ошибку из-за настроек SPN. Например, если вы выполняете тестирование аварийного восстановления на новом сервере, вы можете получить ошибку SSPI при подключении к SQL Server. Еще более странным является то, что вы можете подключиться с помощью SQL Server Management Studio, но не можете подключиться через ODBC или OLEDB. Может быть временный обходной путь, который, вероятно, позволит вам получить доступ к базе данных.
Обходной путь : На каждом клиентском компьютере, пытающемся подключиться к SQL Server, создайте запись в файле хоста каждой рабочей станции. Точный механизм, который используется для устранения проблемы, не подтвержден, но может случиться так, что его использование отменяет необходимость в имени участника-службы.
Хотя это не гарантируется для всех случаев, скорее всего, вы вернетесь к работе. Это не должно считаться постоянным исправлением. Вы должны решить SPN или другие проблемы в идеальной ситуации. Однако, если у вас есть проблемы со старыми машинами Windows, на которых установлена неподдерживаемая операционная система, или если вы просто проводите тестирование концепции аварийного восстановления, это должно помочь вам в том, чтобы вы оставались включенными или работали.
У меня возникла эта проблема, и она была решена путем удаления записи SPN в атрибутах учетной записи компьютера в AD для сервера
Найдите учетную запись компьютера в AD Users and Computers (расширенный просмотр)
пожалуйста, помогите в этом. Эта ошибка не кажется последовательный. Это было исправлено в прошлом, перезагрузив машину, изменив системное время в соответствии с доменным временем и некоторыми предложениями в сети. Пожалуйста, помогите в этом.
Это довольно распространенная ошибка с различными причинами: начните здесь с КБ 811889
- какая версия SQL Server?
- и Windows на клиенте и сервере?
- локальный или сетевой экземпляр SQL?
- домен или рабочая группа? Провайдер?
- смена пароля
- локальные ошибки журнала windows? любые другие приложения?
похоже, что ваш компьютер некоторое время не связывался с аутентифицирующим контроллером домена. (Раньше это случалось на моем ноутбуке несколько раз.)
Это также может произойти, если срок действия пароля истек.
У меня была такая же проблема после изменения пользователя, который запускал MSSQLSERVER-Service
для решения неправильных SPNs с SQL Server я использовал этот инструмент
в моем случае это сработало очень хорошо.
Первое, что вы должны сделать, это зайти в логи ( 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.
эта ошибка обычно возникает, когда срок действия учетной записи пользователя Windows истек, и он уже вошел в систему со старым паролем. Просто попросите пользователя перезагрузить компьютер и проверить, истек ли срок действия пароля или он изменил пароль. Надеюсь, это поможет.
Я решил мой Cannot Generate SSPI Context ошибка при использовании диспетчера конфигурации SQL Server. Поскольку у меня есть собственный клиент SQL Server 10.0 на моей машине, соединение с сервером пытается использовать именованные каналы (или общую память?). Другие машины могут запускать мое приложение без проблем. Когда я смотрел на configuration manager, именованные каналы и общая память были включены (хорошо). Однако под псевдонимом имя компьютера было там с принудительным TCP. Так как я не знал, какой эффект это изменит я бы изменил строку подключения в своей программе, чтобы использовать .вместо этого . Зафиксированный.
Если вы размещаете на IIS,убедитесь, что пароль для учетной записи AppPool не изменился.
Если это так, выполните следующие действия:
- перейти к IIS
- нажмите на пулы приложений
- выберите AppPool вашего приложения
- щелкните правой кнопкой мыши на вашем AppPool
- Дополнительные параметры
- личность
- Обновить Пароль
- Перезапустить AppPool
ошибка "не может генерировать контекст SSPI" является очень общей и может произойти по множеству причин. Это просто ошибка покрытия для любой основной ошибки Kerberos / NTLM. Ссылка на статью Gbn в KB является очень хорошей отправной точкой и обычно решает проблемы. Если у вас все еще есть проблемы, я рекомендую выполнить действия по устранению неполадок в Устранение Ошибок Kerberos.
решение, предложенное indu_teja, говорит:
- мы не сможем подключиться к SQL Server удаленно.
- однако мы сможем подключиться к сервер с локальной учетной записью.
- вам нужно сбросить SPN. Используйте synytax "SET SPN". Вы можете проверить синтаксис в net один раз.
- измените учетную запись службы sql server с учетной записи домена на локальную учетную запись, перезапустите sql, а затем снова сбросьте учетную запись домена и перезапустите sql server.
У меня была та же проблема, и все, что я сделал, это удалил учетные данные входа пользователя в sql server, используя другой идентификатор пользователя и добавив их обратно.
Я могу решить эту проблему, сбросив домен (серверная машина, которая является сервером домена, но не связана с SQL Server, кроме управления доменом), а затем клиентские машины.
спасибо всем за вашу немедленную поддержку!
имел действительно странный экземпляр этого; все веб-продукты, которые имели строки подключения, содержащие имя компьютера windows SQL server, работали нормально, но продукты, которые имели FQDN с внутренним доменом, прикрепленным, дали ошибку SSPI. т. е. ИМЯ КОМПЬЮТЕРА против ИМЯ КОМПЬЮТЕРА.ДОМЕН (ping всегда работал так, как ожидалось)
Это только дало проблемы, когда новый SQL server использовался и файлы хостов указали как имя компьютера, так и имя_компьютера в качестве FQDN для строка подключения.
решением в этом случае было установить все строки подключения только на имя компьютера, удалив ссылки на домен.
SQL: 2008R2 SQL2012
все тогда работало нормально.
в моем случае это был отсутствующий SPN, пришлось выполнить эти две команды:
setspn-A MSSQLSvc: ИМЯ_СЕРВЕРА ИМЯ_СЕРВЕРА setspn-A MSSQLSvc: ИМЯ_СЕРВЕРА: 1433 ИМЯ_СЕРВЕРА
другими словами, в моем случае у меня было FQDN там уже правильно, но не только имя NETBIOS, после добавления их он работал нормально. Ну, сначала это не так, но после ожидания 2 минут это произошло.
У меня была эта ошибка-это произошло потому, что мой пароль истек, и мне пришлось его изменить. Я этого не заметил, потому что в некоторых программах я все еще мог войти в систему, и все будет работать нормально (включая windows), но я не мог войти ни на один sql-сервер.
возможно, вы использовали Integrated Security = SSPI в строке подключения. SSPI используется для доверенных соединений с использованием проверки подлинности Windows.следовательно, для правильной работы при проверке подлинности windows Система и сервер баз данных должны находиться в одном домене и использовать один адрес DNS-сервера или в доверенном домене.
Если ваша система и сервер баз данных находятся в одном домене, проверьте адрес DNS-сервера свойств IPV4 в сетевом подключении вашей системы и предоставьте то же самое DNS-сервер используется сервером баз данных.
Пожалуйста, помогите в этом. Эта ошибка не кажется последовательной. В прошлом это было исправлено путем перезагрузки компьютера, изменения системного времени в соответствии с временем домена и некоторыми предложениями в сети. Пожалуйста, помогите в этом.
Это довольно распространенная ошибка по разным причинам: начните здесь с KB 811889 р>
- Какая версия SQL Server?
- А Windows на клиенте и сервере?
- Локальный или сетевой экземпляр SQL?
- Домен или рабочая группа? Provider?
- Смена пароля
- Ошибки локального журнала Windows?
- Затрагиваются ли другие приложения?
Похоже, ваш компьютер некоторое время не связывался с контроллером домена, выполняющим проверку подлинности. (Раньше такое случалось на моем ноутбуке несколько раз.)
Это также может произойти, если срок действия вашего пароля истек.
У меня возникла та же проблема после смены пользователя, который запускал MSSQLSERVER-Service
Для решения неправильных имен SPN с помощью SQL Server я использовал этот инструмент
В моем случае это сработало довольно хорошо.
Первое, что вы должны сделать, это зайти в журналы ( 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 также есть руководство по ручной настройке имени участника-службы.
Эта ошибка обычно возникает, когда срок действия учетной записи Windows истек, и он уже вошел в систему со старым паролем. Просто попросите пользователя перезагрузить компьютер и проверить, не истек ли срок действия пароля или он сменил пароль. Надеюсь, это поможет .
Я решил свою ошибку Cannot Generate SSPI Context с помощью диспетчера конфигурации SQL Server. Поскольку у меня на компьютере установлен собственный клиент SQL Server 10.0, соединение с сервером пытается использовать именованные каналы (или разделяемую память?). Другие машины могли запускать мое приложение без проблем. Когда я посмотрел на диспетчер конфигурации, оба канала были включены (хорошо). Однако под псевдонимом имя компьютера было там с принудительным TCP. Поскольку я не знал, к какому эффекту это приведет, я изменил строку подключения в моей программе на использование <servername>. & Lt; domainname> вместо. Фиксированный.
Если вы используете IIS, убедитесь, что пароль для учетной записи AppPool не изменился .
Если это так, выполните следующие действия.
- Перейти в IIS
- Нажмите на пулы приложений
- Выберите AppPool вашего приложения
- Щелкните правой кнопкой мыши свой AppPool
- Расширенные настройки
- Идентичность
- Обновить пароль
- Перезапустите AppPool
Ошибка «Невозможно сгенерировать контекст SSPI» является очень общей и может произойти по множеству причин. Это просто ошибка прикрытия для любой основной ошибки Kerberos /NTLM. Ссылка на статью базы знаний Gbn является очень хорошей отправной точкой и обычно решает проблемы. Если у вас все еще есть проблемы, я рекомендую выполнить действия по устранению неполадок в Устранение ошибок Kerberos .
Решение, предлагаемое indu_teja, гласит:
- Мы не сможем подключиться к SQL Server удаленно.
- Однако мы сможем подключиться к серверу с локальной учетной записью.
- Вам нужно сбросить SPN. Используйте синтаксис "SET SPN". Вы можете проверить синтаксис в сети один раз.
- Измените учетную запись службы сервера sql с учетной записи домена на локальную учетную запись, перезапустите sql, а затем снова выполните сброс с учетной записью домена и перезапустите сервер sql.
У меня просто была та же проблема, и все, что я сделал, это удалил учетную запись пользователя в учетных данных на сервере sql, используя другой идентификатор пользователя, и добавил их обратно.
Я могу решить эту проблему, сбросив домен (сервер, являющийся сервером домена, но не связанный с SQL Server, кроме управления доменом), за которым следуют клиентские машины.
Спасибо всем за вашу немедленную поддержку!
Был действительно странный пример этого; Все веб-продукты, которые имели строки подключения, содержащие имя компьютера с Windows-сервером SQL-сервера, работали нормально, но продукты, у которых было полное доменное имя с подключенным внутренним доменом, выдавали ошибку SSPI. то есть ИМЯ КОМПЬЮТЕРА против COMPUTERNAME.DOMAIN (ping всегда работал как положено)
Это ТОЛЬКО создавало проблемы, когда использовался новый сервер SQL и файлы хостов указывали как имя компьютера, так и имя компьютера в качестве полного доменного имени для строк подключения.
Решением в этом случае было установить все строки подключения только на имя компьютера, удалив ссылки на домен.
SQL: 2008R2 SQL2012
- Открыл удаленный компьютер, который попросил меня сменить пароль
- Я изменил свой пароль в этом приглашении и вошел на удаленный компьютер
- Я "заблокировал" свою локальную машину (используя windows + L , чтобы мне не пришлось полностью выходить из системы), чтобы я мог вернуться на страницу входа
- Я вернулся на свой локальный компьютер с новым паролем
Тогда все работало нормально.
В моем случае это был отсутствующий SPN, пришлось выполнить следующие две команды:
setspn -a MSSQLSvc: ИМЯ СЕРВЕРА ИМЯ СЕРВЕРА setspn -a MSSQLSvc: ИМЯ СЕРВЕРА: 1433 ИМЯ СЕРВЕРА
Другими словами, в моем случае у меня уже было полное доменное имя, а не только имя NETBIOS, после добавления оно работало нормально. Ну, поначалу этого не произошло, но после 2 минут ожидания.
У меня была эта ошибка - это произошло потому, что срок действия моего пароля истек, и мне пришлось его изменить. Я этого не заметил, потому что в некоторых программах я все еще мог войти в систему, и все работало бы нормально (включая windows), но я не мог войти ни на один sql-сервер.
Возможно, вы использовали Integrated Security = SSPI в строке подключения. SSPI используется для доверенных соединений с использованием Windows Authentication.hence, чтобы правильно работать в Windows-аутентификации, либо ваша система и сервер базы данных должны находиться в одном домене и использовать один и тот же адрес DNS-сервера, либо должны находиться в доверенном домене.
если ваша система и сервер базы данных находятся в одном домене, проверьте адрес DNS-сервера свойств IPV4 в сетевом подключении вашей системы и укажите тот же DNS-сервер, который используется сервером базы данных.
Пожалуйста, помогите с этим. Эта ошибка не кажется последовательной. Раньше это исправлялось перезапуском машины, изменением системного времени в соответствии с доменным временем и некоторыми предложениями в сети. Пожалуйста, помогите с этим.
Это довольно распространенная ошибка с множеством причин: начните здесь с KB 811889.
- Какая версия SQL Server?
- А винда на клиенте и на сервере?
- Локальный или сетевой экземпляр SQL?
- Домен или рабочая группа? Провайдер?
- Смена пароля
- Ошибки локального журнала Windows?
- Затронуты какие-либо другие приложения?
Похоже, ваш компьютер какое-то время не связывался с контроллером домена, выполняющим проверку подлинности. (Раньше у меня такое случалось на моем ноутбуке несколько раз.)
Это также может произойти, если срок действия вашего пароля истечет.
Эта ошибка обычно возникает, когда срок действия учетной записи пользователя Windows истек, и он уже вошел в систему со старым паролем. Просто попросите пользователя перезагрузить компьютер и проверьте, не истек ли срок действия пароля или он изменил пароль. Надеюсь это поможет.
У меня была такая же проблема после смены пользователя, который запускал MSSQLSERVER-Service.
Чтобы решить неправильные SPN с SQL Server, я использовал этот инструмент
В моем случае это сработало очень хорошо.
Первое, что вам нужно сделать, это зайти в журналы ( 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.
Если вы размещаете на IIS, убедитесь, что пароль для учетной записи AppPool не изменился .
Если да, выполните следующие действия:
- Перейти в IIS
- Щелкните Пулы приложений
- Выберите AppPool вашего приложения
- Щелкните правой кнопкой мыши свой пул приложений
- Расширенные настройки
- тождественность
- Обновить пароль
- Перезапустите AppPool
Я решил мою ошибку Cannot Generate SSPI Context с помощью диспетчера конфигурации SQL Server. Поскольку на моем компьютере установлен собственный клиент SQL Server 10.0, подключение к серверу пытается использовать именованные каналы (или общую память?). На других машинах мое приложение могло запускаться без проблем. Когда я посмотрел на диспетчер конфигурации, были включены и именованные каналы, и общая память (хорошо). Однако под псевдонимом имя компьютера было там с принудительным TCP. Поскольку я не знал, какой эффект будет иметь это изменение, я изменил строку подключения в своей программе, чтобы вместо этого использовать . . Зафиксированный.
Ошибка «Не удается создать контекст SSPI» является очень общей и может возникать по множеству причин. Это просто ошибка прикрытия для любой основной ошибки Kerberos / NTLM. Ссылка на статью в базе знаний Gbn является очень хорошей отправной точкой и обычно решает проблемы. Если у вас все еще есть проблемы, я рекомендую выполнить действия по устранению неполадок в Устранение ошибок Kerberos.
Решение, предложенное Indu_teja, говорит:
- Мы не сможем подключиться к SQL Server удаленно.
- Однако мы сможем подключиться к серверу с локальной учетной записью.
- Вам необходимо сбросить SPN. Воспользуйтесь синтаксисом «SET SPN». Вы можете один раз проверить синтаксис в сети.
- Измените учетную запись службы sql server с учетной записи домена на локальную учетную запись, перезапустите sql, а затем снова выполните сброс с помощью своей учетной записи домена и перезапустите sql server.
У меня была такая же проблема, и все, что я сделал, это удалил учетные данные пользователя на сервере sql, используя другой идентификатор пользователя, и добавил их обратно.
- Открыл удаленный компьютер, и мне было предложено сменить пароль.
- Я изменил свой пароль в этом запросе и вошел на удаленный компьютер
- Я "заблокировал" свой локальный компьютер (с помощью клавиши windows + L , чтобы мне не пришлось полностью выходить из системы), чтобы я мог вернуться на страницу входа
- Я снова вошел на свой локальный компьютер с новым паролем
Дальше все работало нормально.
В моем случае это было отсутствующее SPN, пришлось запустить эти две команды:
setspn -a MSSQLSvc: ИМЯ СЕРВЕРА ИМЯ СЕРВЕРА setspn -a MSSQLSvc: ИМЯ СЕРВЕРА: 1433 ИМЯ СЕРВЕРА
Другими словами, в моем случае у меня уже было полное доменное имя, но не только имя NETBIOS, после их добавления все работало нормально. Ну, изначально этого не произошло, но после 2-х минутного ожидания это произошло.
У меня была эта ошибка - это произошло из-за того, что срок действия моего пароля истек, и мне пришлось его изменить. Я этого не заметил, потому что в некоторых программах я все еще мог войти в систему, и все работало нормально (включая окна), но я не мог войти ни на какие серверы sql.
Возможно, вы использовали Integrated Security = SSPI в строке подключения. SSPI используется для доверенных подключений с использованием проверки подлинности Windows. Следовательно, для правильной работы при проверке подлинности Windows ваша система и сервер базы данных должны находиться в одном домене и использовать один и тот же адрес DNS-сервера или должны находиться в доверенном домене.
Если ваша система и сервер базы данных находятся в одном домене, проверьте адрес DNS-сервера свойств IPV4 в сетевом подключении вашей системы и укажите тот же DNS-сервер, который используется сервером базы данных.
Я могу решить эту проблему, сбросив домен (серверный компьютер, который является сервером домена, но не связан с SQL Server, за исключением управления доменом), за которым следуют клиентские машины.
Спасибо всем за немедленную поддержку!
Был действительно странный случай этого; Все веб-продукты, у которых были строки подключения, содержащие имя компьютера Windows для SQL-сервера, работали нормально, но продукты, у которых было полное доменное имя с присоединенным внутренним доменом, выдавали ошибку SSPI. то есть COMPUTERNAME vs COMPUTERNAME.DOMAIN (ping всегда работал должным образом)
Это вызывало проблемы ТОЛЬКО, когда использовался новый SQL-сервер, и в файлах hosts указывались имя компьютера и имя компьютера как полное доменное имя для строк подключения.
Решением в этом случае было установить для всех строк подключения только имя компьютера, удалив ссылки на домен.
SQL: 2008R2 SQL2012
Читайте также: