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

Исходное имя цели неверно. Невозможно создать контекст SSPI

Я пытаюсь получить соединение SQL Server с машины A на машину B, на которой работает SQL Server.

У меня есть Googled экстенсивно, и все, что я нашел, не сработало. Они также не ведут вас шаг за шагом в процессе решения этого вопроса.

Мы не используем Kerberos, но NTLM, где сконфигурирован.

введите описание изображения здесь

Применяемые машины (xx используется для затенения некоторого имени машины для целей безопасности):

  • xxPRODSVR001 - Контроллер домена Windows Server 2012
  • xxDEVSVR003 - Windows Server 2012 (эта машина генерирует ошибку)
  • xxDEVSVR002 - Windows Server 2012 (на этом компьютере работает SQL Server 2012)

На контроллере DC (xxPRODSVR001) регистрируются следующие SPN. Я закрыл домен с помощью yyy для целей безопасности:

Registered ServicePrincipalNames для CN = xxDEVSVR002, CN = Компьютеры, DC = yyy, DC = local:

            MSSQLSvc/xxDEVSVR002.yyy.local:49298

            MSSQLSvc/xxDEVSVR002.yyy.local:TFS

            RestrictedKrbHost/xxDEVSVR002

            RestrictedKrbHost/xxDEVSVR002.yyy.local

            Hyper-V Replica Service/xxDEVSVR002

            Hyper-V Replica Service/xxDEVSVR002.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR002

            Microsoft Virtual System Migration Service/xxDEVSVR002.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR002

            Microsoft Virtual Console Service/xxDEVSVR002.yyy.local

            SMTPSVC/xxDEVSVR002

            SMTPSVC/xxDEVSVR002.yyy.local

            WSMAN/xxDEVSVR002

            WSMAN/xxDEVSVR002.yyy.local

            Dfsr-12F9A27C-BF97-4787-9364-D31B6C55EB04/xxDEVSVR002.yyy.local

            TERMSRV/xxDEVSVR002

            TERMSRV/xxDEVSVR002.yyy.local

            HOST/xxDEVSVR002

            HOST/xxDEVSVR002.yyy.local

Registered ServicePrincipalNames для CN = xxDEVSVR003, CN = Компьютеры, DC = yyy, DC = local:

            MSSQLSvc/xxDEVSVR003.yyy.local:1433

            MSSQLSvc/xxDEVSVR003.yyy.local

            Hyper-V Replica Service/xxDEVSVR003

            Hyper-V Replica Service/xxDEVSVR003.yyy.local

            Microsoft Virtual System Migration Service/xxDEVSVR003

            Microsoft Virtual System Migration Service/xxDEVSVR003.yyy.local

            Microsoft Virtual Console Service/xxDEVSVR003

            Microsoft Virtual Console Service/xxDEVSVR003.yyy.local

            WSMAN/xxDEVSVR003

            WSMAN/xxDEVSVR003.yyy.local

            TERMSRV/xxDEVSVR003

            TERMSRV/xxDEVSVR003.yyy.local

            RestrictedKrbHost/xxDEVSVR003

            HOST/xxDEVSVR003

            RestrictedKrbHost/xxDEVSVR003.yyy.local

            HOST/xxDEVSVR003.yyy.local

Теперь, если только сообщение об ошибке SQL Server было более наглядным и рассказало мне, какое основное имя, с которым он пытался подключиться, я мог бы диагностировать это.

Так кто-нибудь может мне помочь, как решить эту проблему, или вы можете увидеть что-либо в том, что я представил, что это неправильно?

Я был бы рад создать дополнительную информацию об отладке, просто скажите мне, что вам нужно.

4b9b3361

Ответ 1

У меня была эта проблема с приложением ASP.NET MVC, над которым я работал.

Я понял, что недавно изменил свой пароль, и я смог его исправить, выйдя из системы и снова запустив его обратно.

Ответ 2

Я провел около двух часов с той же проблемой. Оказалось, что проблема "Integrated Security=true" вызвала проблему.

Попробуйте удалить этот параметр из строки подключения.

Ответ 3

Я получил эту ошибку при подключении через SQL Server Management Studio с использованием проверки подлинности Windows. Мой пароль истек, но я еще не изменил его. После изменения мне пришлось выйти из системы и снова войти в систему, чтобы машина работала с использованием моих новых учетных данных.

Ответ 4

Я входил в Windows 10 с PIN-кодом вместо пароля. Я вышел из системы и снова зашел в систему с моим паролем и смог войти в SQL Server через Management Studio.

Ответ 5

Я получал ту же ошибку при попытке проверки подлинности Windows. Звучит смехотворно, но на всякий случай это помогает кому-то другому: это потому, что моя учетная запись в домене каким-то образом заблокировалась, пока я все еще был зарегистрирован (!). Разблокировка учетной записи исправила его.

Ответ 6

Просто добавьте еще одно потенциальное решение этой самой двусмысленной ошибки The target principal name is incorrect. Cannot generate SSPI context. (.Net SqlClient Data Provider):

Убедитесь, что IP-адрес, который разрешен при проверке SQL Server, совпадает с IP-адресом в Configuration Manager. Чтобы проверить, откройте диспетчер конфигурации SQL Server и перейдите в конфигурацию сети SQL Server > Протоколы для MSSQLServer > TCP/IP.

Убедитесь, что TCP/IP включен, а на вкладке "IP-адреса" убедитесь, что IP-адрес, разрешенный сервером, выполняется при пинге. Это исправило эту ошибку для меня.

Ответ 7

Войдите в свой SQL-блок и ваш клиент и введите:

ipconfig /flushdns
nbtstat -R

Если это не сработает, обновите свой DHCP на своей клиентской машине... Эта работа для 2 ПК в нашем офисе.

Ответ 8

Я тестировал IPv6 на кластере ПК в изолированной сети и сталкивался с этой проблемой, когда возвращался обратно на IPv4. Я играл в активный каталог, DNS и DHCP, поэтому понятия не имею, что я сделал, чтобы разбить настройку Kerberos.

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

https://blogs.msdn.microsoft.com/steverac/2010/12/13/test-remote-sql-connectivity-easily/

затем после краткого поиска, найденного на веб-сайте Microsoft, https://support.microsoft.com/en-gb/help/811889/how-to-troubleshoot-the-cannot-generate-sspi-context-error-message.

запустите инструмент на сервере SQL, посмотрите, есть ли какие-либо проблемы, если статус говорит об ошибке, а затем нажмите кнопку исправления, которая появляется.

Это решило проблему для меня.

Ответ 9

Ошибка контекста SSPI определенно указывает на попытку аутентификации с использованием kerberos.

Проверьте журналы событий безопасности, если вы используете Kerberos, вы должны увидеть попытки входа в систему с пакетом аутентификации: Kerberos.

Аутентификация NTLM может быть неудачной, и поэтому делается попытка аутентификации kerberos. Вы также можете увидеть ошибку попытки входа в NTLM в журнале событий безопасности?

Вы можете включить ведение журнала событий Kerberos в dev, чтобы попытаться отладить причину сбоя Kerberos, хотя он очень многословен.

Microsoft Kerberos Configuration Manager для SQL Server может помочь вам быстро диагностировать и устранить эту проблему.

Вот хорошая история для чтения: http://houseofbrick.com/microsoft-made-an-easy-button-for-spn-and-double-hop-issues/

Ответ 10

Я просто столкнулся с этим и исправил его, выполнив две вещи:

  • Предоставление прав на чтение/запись servicePrincipalName учетной записи службы с помощью ADSI Edit, как описано в https://support.microsoft.com/en-us/kb/811889
  • Удаление SPN, ранее существовавших на учетной записи компьютера SQL Server (в отличие от учетной записи службы) с помощью

    setspn -D MSSQLSvc/HOSTNAME.domain.name.com:1234 HOSTNAME
    

    где 1234 был номером порта, используемым экземпляром (мой не был экземпляром по умолчанию).

Ответ 11

В моем случае исправление проблемы с перезагрузкой SQL Server 2014 (на моем сервере разработки).

Ответ 12

У меня была эта проблема при доступе к веб-приложению. Возможно, это связано с тем, что я недавно изменил пароль Windows.

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

Ответ 13

Проверьте соответствие часов между клиентом и сервером.

Когда у меня была эта ошибка с перерывами, ни один из вышеперечисленных ответов не работал, тогда мы обнаружили, что на некоторых наших серверах время прошло, как только они снова синхронизировались, ошибка исчезла. Найдите w32tm или NTP, чтобы узнать, как автоматически синхронизировать время в Windows.

Ответ 14

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

Я отлично подключался к SQL Server, пока моя машина не была перенесена в другой офис на другом домене. Затем, после переключения, я получал эту ошибку относительно целевого имени участника. Исправлено подключение, используя полное имя, например: server.domain.com. И фактически, как только я подключился к первому серверу таким образом, я мог подключиться к другим серверам, используя только имя сервера (без полной квалификации), но ваш пробег может отличаться.

Ответ 15

Я столкнулся с этим сегодня и хотел поделиться своим исправлением, так как это просто пропущено и легко исправить.

Мы управляем нашим собственным rDNS и недавно изменили схему именования серверов. В рамках этого мы должны были обновить наш rDNS и забыть об этом.

Пинг поднял правильное имя хоста, но ping -a вернул неправильное имя хоста.

Простое исправление: измените rDNS, выполните ipconfig/flushdns, подождите 30 секунд (просто что-то я делаю), сделайте еще один пинг -a, посмотрите, как он разрешает правильное имя хоста, подключается... прибыль.

Ответ 16

Я столкнулся с новым для этого: SQL 2012, размещенный на сервере 2012. Было поручено создать кластер для SQL AlwaysOn.
Кластер был создан, каждый получил сообщение SSPI.

Чтобы устранить проблемы, выполните следующую команду:

setspn -D MSSQLSvc/SERVER_FQNName:1433 DomainNamerunningSQLService

DomainNamerunningSQLService == Учетная запись домена, установленная для SQL Для выполнения этой команды мне понадобился администратор домена. Только один сервер в кластере имел проблемы.

Затем перезагрузите SQL. К моему удивлению, я смог подключиться.

Ответ 17

Я пытался подключиться к виртуальной машине под управлением SQL Server 2015 с моего ноутбука в приложении Visual Studio 2015 Console. Я запускаю свое приложение накануне вечером, и все в порядке. Утром я пытаюсь отладить приложение, и я получаю эту ошибку. Я пробовал ipconfig/flush и release + renew и кучу другого мусора, но в конце...

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

Ответ 18

Убедитесь, что "Именованные каналы" включены в "Диспетчере конфигурации SQL Server". Это сработало для меня.

  1. Откройте "Диспетчер конфигурации SQL Server".
  2. Разверните "Конфигурация сети SQL Server" из списка слева.
  3. Выберите "Протоколы для [Ваше имя экземпляра]".
  4. Щелкните правой кнопкой мыши на "Named Pipes", в списке справа.
  5. Выберите "Включить"
  6. Перезапустите службу Instance.

Ответ 19

Этот инструмент Microsoft похож на Magic. Запустите его, подключите его к серверу SQL и нажмите кнопку "Исправить"

Старая ссылка, приведенная здесь, работала на SQL Server 2017.

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

Ответ 20

Я столкнулся с вариантом этой проблемы, вот характеристики:

  • Пользователь смог успешно подключиться к именованному экземпляру, например, успешные соединения с Server\Instance
  • Пользователь был неспособен подключиться к экземпляру по умолчанию, например, к неудачному соединению с Server с снимком OP, касающимся SSPI
  • Пользователь не смог подключиться к экземпляру по умолчанию с полным именем, например, к Server.domain.com сбой (тайм-аут)
  • Пользователь не смог подключить IP-адрес без именованного экземпляра, например, не удалось подключиться к 192.168.1.134
  • Другие пользователи, не входящие в домен (например, пользователи, подключенные к сети), но используя учетные данные домена, смогли успешно подключиться к экземпляру по умолчанию и IP-адресу

Итак, после многих головных болей, пытающихся выяснить, почему этот единственный пользователь не смог подключиться, вот шаги, которые мы предприняли для исправления ситуации:

  • Взгляните на сервер в списке SPN, используя setspn -l Server
    а. В нашем случае он сказал Server.domain.com
  • Добавьте запись в файл hosts, расположенный в C:\Windows\System32\drivers\etc\hosts (запустите "Блокнот как администратор", чтобы изменить этот файл). Запись, которую мы добавили, была Server.domain.com Server

После этого мы смогли успешно подключиться через SSMS к экземпляру по умолчанию.

Ответ 21

У меня была эта проблема на моем сервере sql. я setpn -D mssqlsvc\Hostname.domainname Имя хоста затем остановился и запустил службу SQL-сервера.

Я думаю, что только остановка и запуск моей службы sql сделали бы это.

Ответ 22

У меня тоже была эта проблема на SQL Server 2014 при регистрации с помощью Windows Authentication, чтобы решить проблему. У меня был один раз перезагрузился мой сервер, а затем попытался войти в систему, это сработало для меня.

Ответ 23

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

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

Ответ 24

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

Ответ 25

Я пробовал все решения здесь, и никто из них еще не работал. Обходной путь, который работает, - нажать " Подключиться", ввести имя сервера, выбрать "Параметры", "Свойства подключения". Установите "Сетевой протокол" на "Именованные каналы". Это позволяет пользователям удаленно подключаться с использованием своих учетных данных сети. Когда я получу исправление, я опубликую обновление.

Ответ 26

Я запускаю систему тестирования Mickey Mouse на основе SQL.COM.

Я запустил setspn -T sql -F -Q */Servername (в этом случае SQL01) как на машине, с которой я не мог подключиться, так и на машине, которую я мог. Затем я просто удалил дополнительные записи на машине проблем, и все это сработало, например setspn -D MSSQLSvc/SQL01.SQL.COM:1433 SQL01

Ответ 27

Кажется, проблема связана с DNS-сервером. Чтобы устранить эту проблему, измените IP-адрес на имя_компьютера.

Пример: измените значение "10.0.0.10\TestDB" на "YourComputerName\TestDB"

Ответ 28

Совсем не идеальное решение, я просто хотел добавить это для будущих ссылок для тех, кто видит эту страницу:

У меня возникла проблема с подключением к удаленному экземпляру SQL Server с использованием моей учетной записи домена, попробовав то же самое в экземпляре, размещенном на другом компьютере, отлично работала.

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

Ответ 29

Я добавлю это здесь, поскольку он поймал меня и может помочь кому-то другому. Caveat emptor, я не являюсь пользователем Windows, но должен был посмотреть на сценарий, включающий SQL-сервер.

Я загрузил версию разработчика полного продукта SQL Server и установил ее в Windows 10. Все хорошо для локальных подключений, ничего для удаленного клиента.

Пробовал многие из вышеперечисленных, но в конце концов я понял, что аутентификация Windows хочет аутентифицировать remoteclient\myuser, и в автономном мире Windows не было возможности создать механизм аутентификации (как я понимаю, это kerberos). Сообщение об ошибке "Невозможно создать контекст SSPI".

Использование SQL Authentication также не работает.

В конце концов я вернулся к SQL Server Express, который имеет комбинированный режим, и затем я мог бы использовать SQL Authentication от удаленных клиентов.

Ответ 30

В моем случае проблема была в настройке DNS на вайфай. Я удалил настройки, оставил их пустыми и работал.

Como ficou minha configuração do DNS